From 6d938a2451ce128fa12225985ed2be81b33edccd Mon Sep 17 00:00:00 2001 From: Maxime Bouillot Date: Wed, 21 Dec 2022 12:17:59 +0100 Subject: [PATCH 1/2] Let multiples single letter arguments be chained. This enable, for example, to do `rem --rm-mode -vf` to enable both verbose and force mode in a single argument. This is important for GNU rm compatibility as `rm -fr` is a very common call. --- rem.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rem.go b/rem.go index 193e08e..000e164 100644 --- a/rem.go +++ b/rem.go @@ -495,7 +495,7 @@ func argsHaveOption(long string, short string) (hasOption bool, foundAt int) { if arg == "--" { return false, 0 } - if arg == "--"+long && long != "" || arg == "-"+short && short != "" { + if arg == "--"+long && long != "" || (len(arg) > 1 && arg[0] == '-' && arg[1] != '-' && short != "" && strings.Contains(arg[1:], short)) { return true, i } } From 41076af67209499b70ad738d2d3b070477a6833c Mon Sep 17 00:00:00 2001 From: Ishan Goel Date: Sat, 24 Dec 2022 03:29:08 +0000 Subject: [PATCH 2/2] stuff --- rem.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rem.go b/rem.go index 000e164..2e052ba 100644 --- a/rem.go +++ b/rem.go @@ -130,7 +130,8 @@ func main() { updateAndIgnoreIfHasOption("recursive", "r", nil) updateAndIgnoreIfHasOption("", "R", nil) updateAndIgnoreIfHasOption("one-file-system", "", nil) - updateAndIgnoreIfHasOption("-no-preserve-root", "preserve-root", nil) // short one actually used as a long option using a - at the start + updateAndIgnoreIfHasOption("preserve-root", "", nil) + updateAndIgnoreIfHasOption("no-preserve-root", "", nil) } else { if hasOption, _ := argsHaveOption("help", "h"); hasOption { fmt.Println(helpMsg) @@ -495,7 +496,7 @@ func argsHaveOption(long string, short string) (hasOption bool, foundAt int) { if arg == "--" { return false, 0 } - if arg == "--"+long && long != "" || (len(arg) > 1 && arg[0] == '-' && arg[1] != '-' && short != "" && strings.Contains(arg[1:], short)) { + if long != "" && arg == "--"+long || (short != "" && len(arg) > 1 && arg[0] == '-' && arg[1] != '-' && strings.Contains(arg[1:], short)) { return true, i } }