@@ -23,7 +23,7 @@ use thiserror::Error;
2323
2424use platform:: copy_on_write;
2525use uucore:: display:: Quotable ;
26- use uucore:: error:: { UClapError , UError , UResult , UUsageError , set_exit_code} ;
26+ use uucore:: error:: { UError , UResult , UUsageError , set_exit_code} ;
2727#[ cfg( unix) ]
2828use uucore:: fs:: make_fifo;
2929use uucore:: fs:: {
@@ -796,46 +796,33 @@ pub fn uu_app() -> Command {
796796
797797#[ uucore:: main]
798798pub fn uumain ( args : impl uucore:: Args ) -> UResult < ( ) > {
799- let matches = uu_app ( ) . try_get_matches_from ( args) ;
799+ let matches = uu_app ( ) . try_get_matches_from ( args) ? ;
800800
801- // The error is parsed here because we do not want version or help being printed to stderr.
802- if let Err ( e) = matches {
803- let mut app = uu_app ( ) ;
801+ let options = Options :: from_matches ( & matches) ?;
804802
805- match e. kind ( ) {
806- clap:: error:: ErrorKind :: DisplayHelp => {
807- app. print_help ( ) ?;
808- }
809- clap:: error:: ErrorKind :: DisplayVersion => print ! ( "{}" , app. render_version( ) ) ,
810- _ => return Err ( Box :: new ( e. with_exit_code ( 1 ) ) ) ,
811- } ;
812- } else if let Ok ( mut matches) = matches {
813- let options = Options :: from_matches ( & matches) ?;
814-
815- if options. overwrite == OverwriteMode :: NoClobber && options. backup != BackupMode :: None {
816- return Err ( UUsageError :: new (
817- EXIT_ERR ,
818- "options --backup and --no-clobber are mutually exclusive" ,
819- ) ) ;
820- }
803+ if options. overwrite == OverwriteMode :: NoClobber && options. backup != BackupMode :: None {
804+ return Err ( UUsageError :: new (
805+ EXIT_ERR ,
806+ "options --backup and --no-clobber are mutually exclusive" ,
807+ ) ) ;
808+ }
821809
822- let paths: Vec < PathBuf > = matches
823- . remove_many :: < OsString > ( options:: PATHS )
824- . map ( |v| v. map ( PathBuf :: from) . collect ( ) )
825- . unwrap_or_default ( ) ;
810+ let paths: Vec < PathBuf > = matches
811+ . get_many :: < OsString > ( options:: PATHS )
812+ . map ( |v| v. map ( PathBuf :: from) . collect ( ) )
813+ . unwrap_or_default ( ) ;
826814
827- let ( sources, target) = parse_path_args ( paths, & options) ?;
815+ let ( sources, target) = parse_path_args ( paths, & options) ?;
828816
829- if let Err ( error) = copy ( & sources, & target, & options) {
830- match error {
831- // Error::NotAllFilesCopied is non-fatal, but the error
832- // code should still be EXIT_ERR as does GNU cp
833- CpError :: NotAllFilesCopied => { }
834- // Else we caught a fatal bubbled-up error, log it to stderr
835- _ => show_error ! ( "{error}" ) ,
836- } ;
837- set_exit_code ( EXIT_ERR ) ;
838- }
817+ if let Err ( error) = copy ( & sources, & target, & options) {
818+ match error {
819+ // Error::NotAllFilesCopied is non-fatal, but the error
820+ // code should still be EXIT_ERR as does GNU cp
821+ CpError :: NotAllFilesCopied => { }
822+ // Else we caught a fatal bubbled-up error, log it to stderr
823+ _ => show_error ! ( "{error}" ) ,
824+ } ;
825+ set_exit_code ( EXIT_ERR ) ;
839826 }
840827
841828 Ok ( ( ) )
0 commit comments