mirror of
https://github.com/bootandy/dust.git
synced 2026-06-08 11:29:05 +03:00
Fix: Passing a string into -n will no longer panic
fixes: #https://github.com/bootandy/dust/issues/16
This commit is contained in:
+11
-7
@@ -10,9 +10,10 @@ use utils::{find_big_ones, get_dir_tree, sort};
|
|||||||
mod display;
|
mod display;
|
||||||
mod utils;
|
mod utils;
|
||||||
|
|
||||||
static DEFAULT_NUMBER_OF_LINES: &'static str = "20";
|
static DEFAULT_NUMBER_OF_LINES: usize = 20;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
let def_num_str = DEFAULT_NUMBER_OF_LINES.to_string();
|
||||||
let options = App::new("Dust")
|
let options = App::new("Dust")
|
||||||
.setting(AppSettings::TrailingVarArg)
|
.setting(AppSettings::TrailingVarArg)
|
||||||
.arg(
|
.arg(
|
||||||
@@ -28,7 +29,7 @@ fn main() {
|
|||||||
.long("number-of-lines")
|
.long("number-of-lines")
|
||||||
.help("Number of lines of output to show")
|
.help("Number of lines of output to show")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.default_value(DEFAULT_NUMBER_OF_LINES),
|
.default_value(def_num_str.as_ref()),
|
||||||
)
|
)
|
||||||
.arg(
|
.arg(
|
||||||
Arg::with_name("display_full_paths")
|
Arg::with_name("display_full_paths")
|
||||||
@@ -52,21 +53,24 @@ fn main() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let number_of_lines = value_t!(options.value_of("number_of_lines"), usize).unwrap();
|
let number_of_lines = match value_t!(options.value_of("number_of_lines"), usize) {
|
||||||
|
Ok(v) => v,
|
||||||
|
Err(_) => { eprintln!("Bad value for number_of_lines - ignoring"); DEFAULT_NUMBER_OF_LINES}
|
||||||
|
};
|
||||||
|
|
||||||
let depth = {
|
let depth = {
|
||||||
if options.is_present("depth") {
|
if options.is_present("depth") {
|
||||||
match value_t!(options.value_of("depth"), u64) {
|
match value_t!(options.value_of("depth"), u64) {
|
||||||
Ok(v) => Some(v + 1),
|
Ok(v) => Some(v + 1),
|
||||||
Err(_) => None,
|
Err(_) => { eprintln!("Bad value for depth - ignoring"); None},
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if options.is_present("depth")
|
if options.is_present("depth") && number_of_lines != DEFAULT_NUMBER_OF_LINES
|
||||||
&& options.value_of("number_of_lines").unwrap() != DEFAULT_NUMBER_OF_LINES
|
|
||||||
{
|
{
|
||||||
eprintln!("Use either -n for number of directories to show. Or -d for depth. Not both");
|
eprintln!("Use either -n or -d. Not both");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user