@@ -510,13 +510,27 @@ impl std::str::FromStr for Command {
510510 } else if command == CMD_SORT {
511511 match arg {
512512 "reverse" => Ok ( Self :: SortReverse ) ,
513- arg => match SortType :: from_str ( arg) {
514- Some ( s) => Ok ( Self :: Sort ( s) ) ,
515- None => Err ( AppError :: new (
516- AppErrorKind :: InvalidParameters ,
517- format ! ( "{}: Unknown option '{}'" , command, arg) ,
518- ) ) ,
519- } ,
513+ arg => {
514+ let ( sort, reverse) = match arg. split_once ( ' ' ) {
515+ Some ( ( s, "--reverse=true" ) ) => ( s, Some ( true ) ) ,
516+ Some ( ( s, "--reverse=false" ) ) => ( s, Some ( false ) ) ,
517+ Some ( ( _, opt) ) => {
518+ return Err ( AppError :: new (
519+ AppErrorKind :: InvalidParameters ,
520+ format ! ( "{}: Unknown option '{}'" , command, opt) ,
521+ ) )
522+ }
523+ None => ( arg, None ) ,
524+ } ;
525+
526+ match SortType :: from_str ( sort) {
527+ Some ( sort_type) => Ok ( Self :: Sort { sort_type, reverse } ) ,
528+ None => Err ( AppError :: new (
529+ AppErrorKind :: InvalidParameters ,
530+ format ! ( "{}: Unknown option '{}'" , command, sort) ,
531+ ) ) ,
532+ }
533+ }
520534 }
521535 } else if command == CMD_SET_LINEMODE {
522536 Ok ( Self :: SetLineMode ( LineMode :: from_string ( arg) ?) )
0 commit comments