1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-28 19:47:45 +00:00

rm: return UResult from uumain() function

This commit is contained in:
Jeffrey Finkelstein 2021-12-29 15:57:55 -05:00
parent 4ae838a8b2
commit f6305e2a3e
2 changed files with 14 additions and 10 deletions

View file

@ -18,6 +18,7 @@ use std::io::{stderr, stdin, BufRead, Write};
use std::ops::BitOr; use std::ops::BitOr;
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
use uucore::display::Quotable; use uucore::display::Quotable;
use uucore::error::{UResult, USimpleError, UUsageError};
use walkdir::{DirEntry, WalkDir}; use walkdir::{DirEntry, WalkDir};
#[derive(Eq, PartialEq, Clone, Copy)] #[derive(Eq, PartialEq, Clone, Copy)]
@ -75,7 +76,8 @@ fn get_long_usage() -> String {
) )
} }
pub fn uumain(args: impl uucore::Args) -> i32 { #[uucore_procs::gen_uumain]
pub fn uumain(args: impl uucore::Args) -> UResult<()> {
let usage = usage(); let usage = usage();
let long_usage = get_long_usage(); let long_usage = get_long_usage();
@ -94,9 +96,7 @@ pub fn uumain(args: impl uucore::Args) -> i32 {
if files.is_empty() && !force { if files.is_empty() && !force {
// Still check by hand and not use clap // Still check by hand and not use clap
// Because "rm -f" is a thing // Because "rm -f" is a thing
show_error!("missing an argument"); return Err(UUsageError::new(1, "missing operand"));
show_error!("for help, try '{0} --help'", uucore::execution_phrase());
return 1;
} else { } else {
let options = Options { let options = Options {
force, force,
@ -110,7 +110,12 @@ pub fn uumain(args: impl uucore::Args) -> i32 {
"none" => InteractiveMode::None, "none" => InteractiveMode::None,
"once" => InteractiveMode::Once, "once" => InteractiveMode::Once,
"always" => InteractiveMode::Always, "always" => InteractiveMode::Always,
val => crash!(1, "Invalid argument to interactive ({})", val), val => {
return Err(USimpleError::new(
1,
format!("Invalid argument to interactive ({})", val),
))
}
} }
} else { } else {
InteractiveMode::None InteractiveMode::None
@ -129,16 +134,15 @@ pub fn uumain(args: impl uucore::Args) -> i32 {
"Remove all arguments? " "Remove all arguments? "
}; };
if !prompt(msg) { if !prompt(msg) {
return 0; return Ok(());
} }
} }
if remove(files, options) { if remove(files, options) {
return 1; return Err(1.into());
} }
} }
Ok(())
0
} }
pub fn uu_app() -> App<'static, 'static> { pub fn uu_app() -> App<'static, 'static> {

View file

@ -280,7 +280,7 @@ fn test_rm_force_no_operand() {
fn test_rm_no_operand() { fn test_rm_no_operand() {
let ts = TestScenario::new(util_name!()); let ts = TestScenario::new(util_name!());
ts.ucmd().fails().stderr_is(&format!( ts.ucmd().fails().stderr_is(&format!(
"{0}: missing an argument\n{0}: for help, try '{1} {0} --help'\n", "{0}: missing operand\nTry '{1} {0} --help' for more information.\n",
ts.util_name, ts.util_name,
ts.bin_path.to_string_lossy() ts.bin_path.to_string_lossy()
)); ));