From 266499800b7ae3a29a9ccef4ba24fe195763a3e2 Mon Sep 17 00:00:00 2001 From: Deepansh Sood <21deepansh@gmail.com> Date: Tue, 8 Oct 2019 07:40:16 -0500 Subject: [PATCH] Fix idempotent flags Add 'overrides_with' to format flags. Resolves sharkdp/fd#488 --- src/app.rs | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/app.rs b/src/app.rs index dd2811a..c5edf71 100644 --- a/src/app.rs +++ b/src/app.rs @@ -46,9 +46,14 @@ pub fn build_app() -> App<'static, 'static> { "Note: `fd -h` prints a short and concise overview while `fd --help` \ gives all details.", ) - .arg(arg("hidden").long("hidden").short("H")) - .arg(arg("no-ignore").long("no-ignore").short("I")) - .arg(arg("no-ignore-vcs").long("no-ignore-vcs")) + .arg( + arg("hidden") + .long("hidden") + .short("H") + .overrides_with("hidden") + ) + .arg(arg("no-ignore").long("no-ignore").short("I").overrides_with("no-ignore")) + .arg(arg("no-ignore-vcs").long("no-ignore-vcs").overrides_with("no-ignore-vcs")) .arg( arg("rg-alias-hidden-ignore") .short("u") @@ -60,36 +65,38 @@ pub fn build_app() -> App<'static, 'static> { arg("case-sensitive") .long("case-sensitive") .short("s") - .overrides_with("ignore-case"), + .overrides_with_all(&["ignore-case", "case-sensitive"]), ) .arg( arg("ignore-case") .long("ignore-case") .short("i") - .overrides_with("case-sensitive"), + .overrides_with_all(&["case-sensitive", "ignore-case"]), ) .arg( arg("glob") .long("glob") .short("g") - .conflicts_with("fixed-strings"), + .conflicts_with("fixed-strings") + .overrides_with("glob"), ) .arg( arg("regex") .long("regex") - .overrides_with("glob") + .overrides_with_all(&["glob", "regex"]) .hidden_short_help(true), ) .arg( arg("fixed-strings") .long("fixed-strings") .short("F") - .alias("literal"), + .alias("literal") + .overrides_with("fixed-strings"), ) - .arg(arg("absolute-path").long("absolute-path").short("a")) - .arg(arg("follow").long("follow").short("L").alias("dereference")) - .arg(arg("full-path").long("full-path").short("p")) - .arg(arg("null_separator").long("print0").short("0")) + .arg(arg("absolute-path").long("absolute-path").short("a").overrides_with("absolute-path")) + .arg(arg("follow").long("follow").short("L").alias("dereference").overrides_with("follow")) + .arg(arg("full-path").long("full-path").short("p").overrides_with("full-path")) + .arg(arg("null_separator").long("print0").short("0").overrides_with("print0")) .arg(arg("depth").long("max-depth").short("d").takes_value(true)) // support --maxdepth as well, for compatibility with rg .arg( @@ -217,7 +224,8 @@ pub fn build_app() -> App<'static, 'static> { .arg( arg("show-errors") .long("show-errors") - .hidden_short_help(true), + .hidden_short_help(true) + .overrides_with("show-errors"), ) .arg(arg("pattern")) .arg(