From 95e52e1ac3d1645f7393dc834073a63bc38fef35 Mon Sep 17 00:00:00 2001 From: Nick Craig-Wood Date: Sat, 29 Dec 2018 17:34:58 +0000 Subject: [PATCH] cmd: improve error reporting for too many/few arguments - fixes #2860 Improve docs on the different kind of flag passing. --- cmd/cmd.go | 10 ++++------ docs/content/docs.md | 9 +++++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/cmd/cmd.go b/cmd/cmd.go index 6c85c7131..1b6842e2e 100644 --- a/cmd/cmd.go +++ b/cmd/cmd.go @@ -51,7 +51,7 @@ var ( errorCommandNotFound = errors.New("command not found") errorUncategorized = errors.New("uncategorized error") errorNotEnoughArguments = errors.New("not enough arguments") - errorTooManyArguents = errors.New("too many arguments") + errorTooManyArguments = errors.New("too many arguments") ) const ( @@ -294,14 +294,12 @@ func Run(Retry bool, showStats bool, cmd *cobra.Command, f func() error) { func CheckArgs(MinArgs, MaxArgs int, cmd *cobra.Command, args []string) { if len(args) < MinArgs { _ = cmd.Usage() - _, _ = fmt.Fprintf(os.Stderr, "Command %s needs %d arguments minimum\n", cmd.Name(), MinArgs) - // os.Exit(1) + _, _ = fmt.Fprintf(os.Stderr, "Command %s needs %d arguments minimum: you provided %d non flag arguments: %q\n", cmd.Name(), MinArgs, len(args), args) resolveExitCode(errorNotEnoughArguments) } else if len(args) > MaxArgs { _ = cmd.Usage() - _, _ = fmt.Fprintf(os.Stderr, "Command %s needs %d arguments maximum\n", cmd.Name(), MaxArgs) - // os.Exit(1) - resolveExitCode(errorTooManyArguents) + _, _ = fmt.Fprintf(os.Stderr, "Command %s needs %d arguments maximum: you provided %d non flag arguments: %q\n", cmd.Name(), MaxArgs, len(args), args) + resolveExitCode(errorTooManyArguments) } } diff --git a/docs/content/docs.md b/docs/content/docs.md index 495ab259f..4ce2fb8b5 100644 --- a/docs/content/docs.md +++ b/docs/content/docs.md @@ -267,6 +267,15 @@ Options Rclone has a number of options to control its behaviour. +Options that take parameters can have the values passed in two ways, +`--option=value` or `--option value`. However boolean (true/false) +options behave slightly differently to the other options in that +`--boolean` sets the option to `true` and the absence of the flag sets +it to `false`. It is also possible to specify `--boolean=false` or +`--boolean=true`. Note that `--boolean false` is not valid - this is +parsed as `--boolean` and the `false` is parsed as an extra command +line argument for rclone. + Options which use TIME use the go time parser. A duration string is a possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m". Valid