Skip to content

Commit 7c7a6fd

Browse files
committed
Update
1 parent 9f40ddb commit 7c7a6fd

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

src/main.rs

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,17 @@ use clap::Parser;
66
#[command(version, about, long_about = None)]
77
pub 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

1518
fn 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

Comments
 (0)