@@ -6,14 +6,17 @@ use clap::Parser;
66#[ command( version, about, long_about = None ) ]
77pub struct Args {
88 /// Name of the file to combine in child directories
9- pub file : String ,
9+ pub file : String ,
1010 /// Directory to search for subdirectories in.
1111 #[ arg( short, long) ]
12- pub dir : Option < String > ,
12+ pub dir : Option < String > ,
13+ /// Don't sort the output by key
14+ #[ arg( short, long, default_value_t = false ) ]
15+ pub no_sort : bool ,
1316}
1417
1518fn main ( ) {
16- let Args { file, dir } = Args :: parse ( ) ;
19+ let Args { file, dir, no_sort } = Args :: parse ( ) ;
1720 let dir = match dir {
1821 Some ( d) => PathBuf :: from ( d) ,
1922 None => std:: env:: current_dir ( ) . expect ( "Failed to get current directory" ) ,
@@ -122,17 +125,19 @@ fn main() {
122125 }
123126 writeln ! ( writer) . expect ( "Failed to write header to output file" ) ;
124127 let mut output = output. into_iter ( ) . collect :: < Vec < _ > > ( ) ;
125- if output[ 0 ] . 0 . parse :: < isize > ( ) . is_err ( ) {
126- output. sort_by ( |( ka, _) , ( kb, _) | ka. cmp ( kb) ) ;
127- } else {
128- output. sort_by ( |( ka, _) , ( kb, _) | {
129- ka. parse :: < isize > ( )
130- . unwrap_or_else ( |_| panic ! ( "Failed to parse key '{}'" , ka) )
131- . cmp (
132- & kb. parse :: < isize > ( )
133- . unwrap_or_else ( |_| panic ! ( "Failed to parse key '{}'" , kb) ) ,
134- )
135- } ) ;
128+ if !no_sort {
129+ if output[ 0 ] . 0 . parse :: < isize > ( ) . is_err ( ) {
130+ output. sort_by ( |( ka, _) , ( kb, _) | ka. cmp ( kb) ) ;
131+ } else {
132+ output. sort_by ( |( ka, _) , ( kb, _) | {
133+ ka. parse :: < isize > ( )
134+ . unwrap_or_else ( |_| panic ! ( "Failed to parse key '{}'" , ka) )
135+ . cmp (
136+ & kb. parse :: < isize > ( )
137+ . unwrap_or_else ( |_| panic ! ( "Failed to parse key '{}'" , kb) ) ,
138+ )
139+ } ) ;
140+ }
136141 }
137142 for ( key, values) in output {
138143 writeln ! (
0 commit comments