diff --git a/src/options.rs b/src/options.rs index d62dfd6ece..adec069cb0 100644 --- a/src/options.rs +++ b/src/options.rs @@ -153,7 +153,7 @@ fn app() -> clap::Command<'static> { .long_help("The number of contextual lines to show around changed lines.") .default_value("3") .env("DFT_CONTEXT") - .validator(|s| s.parse::()) + .value_parser(clap::value_parser!(u32)) .required(false), ) .arg( @@ -164,7 +164,7 @@ fn app() -> clap::Command<'static> { .action(ArgAction::Set) .long_help("Use this many columns when calculating line wrapping. If not specified, difftastic will detect the terminal width.") .env("DFT_WIDTH") - .validator(|s| s.parse::()) + .value_parser(clap::value_parser!(usize)) .required(false), ) .arg( @@ -176,7 +176,7 @@ fn app() -> clap::Command<'static> { .long_help("Treat a tab as this many spaces.") .env("DFT_TAB_WIDTH") .default_value(formatcp!("{}", DEFAULT_TAB_WIDTH)) - .validator(|s| s.parse::()) + .value_parser(clap::value_parser!(usize)) .required(false), ) .arg( @@ -296,7 +296,7 @@ When multiple overrides are specified, the first matching override wins.")) .help("Use a text diff if either input file exceeds this size.") .default_value(formatcp!("{}", DEFAULT_BYTE_LIMIT)) .env("DFT_BYTE_LIMIT") - .validator(|s| s.parse::()) + .value_parser(clap::value_parser!(usize)) .required(false), ) .arg( @@ -307,7 +307,7 @@ When multiple overrides are specified, the first matching override wins.")) .default_value(formatcp!("{}", DEFAULT_GRAPH_LIMIT)) .action(ArgAction::Set) .env("DFT_GRAPH_LIMIT") - .validator(|s| s.parse::()) + .value_parser(clap::value_parser!(usize)) .required(false), ) .arg( @@ -318,7 +318,7 @@ When multiple overrides are specified, the first matching override wins.")) .help("Use a text diff if the number of parse errors exceeds this value.") .default_value(formatcp!("{}", DEFAULT_PARSE_ERROR_LIMIT)) .env("DFT_PARSE_ERROR_LIMIT") - .validator(|s| s.parse::()) + .value_parser(clap::value_parser!(usize)) .required(false), ) .arg( @@ -704,10 +704,8 @@ pub(crate) fn parse_args() -> Mode { }; } - let terminal_width = if let Some(arg_width) = matches.get_one::("width") { - arg_width - .parse::() - .expect("Already validated by clap") + let terminal_width = if let Some(arg_width) = matches.get_one::("width") { + *arg_width } else { detect_terminal_width() }; @@ -750,35 +748,25 @@ pub(crate) fn parse_args() -> Mode { let sort_paths = matches.get_flag("sort-paths"); - let graph_limit = matches - .get_one::("graph-limit") - .expect("Always present as we've given clap a default") - .parse::() - .expect("Value already validated by clap"); + let graph_limit = *matches + .get_one("graph-limit") + .expect("Always present as we've given clap a default"); - let byte_limit = matches - .get_one::("byte-limit") - .expect("Always present as we've given clap a default") - .parse::() - .expect("Value already validated by clap"); + let byte_limit = *matches + .get_one("byte-limit") + .expect("Always present as we've given clap a default"); - let parse_error_limit = matches - .get_one::("parse-error-limit") - .expect("Always present as we've given clap a default") - .parse::() - .expect("Value already validated by clap"); + let parse_error_limit = *matches + .get_one("parse-error-limit") + .expect("Always present as we've given clap a default"); - let tab_width = matches - .get_one::("tab-width") - .expect("Always present as we've given clap a default") - .parse::() - .expect("Value already validated by clap"); + let tab_width = *matches + .get_one("tab-width") + .expect("Always present as we've given clap a default"); - let num_context_lines = matches - .get_one::("context") - .expect("Always present as we've given clap a default") - .parse::() - .expect("Value already validated by clap"); + let num_context_lines = *matches + .get_one("context") + .expect("Always present as we've given clap a default"); let print_unchanged = !matches.get_flag("skip-unchanged");