cmd: improve error reporting for too many/few arguments - fixes #2860
Improve docs on the different kind of flag passing.
This commit is contained in:
parent
51ab1c940a
commit
95e52e1ac3
2 changed files with 13 additions and 6 deletions
10
cmd/cmd.go
10
cmd/cmd.go
|
@ -51,7 +51,7 @@ var (
|
||||||
errorCommandNotFound = errors.New("command not found")
|
errorCommandNotFound = errors.New("command not found")
|
||||||
errorUncategorized = errors.New("uncategorized error")
|
errorUncategorized = errors.New("uncategorized error")
|
||||||
errorNotEnoughArguments = errors.New("not enough arguments")
|
errorNotEnoughArguments = errors.New("not enough arguments")
|
||||||
errorTooManyArguents = errors.New("too many arguments")
|
errorTooManyArguments = errors.New("too many arguments")
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
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) {
|
func CheckArgs(MinArgs, MaxArgs int, cmd *cobra.Command, args []string) {
|
||||||
if len(args) < MinArgs {
|
if len(args) < MinArgs {
|
||||||
_ = cmd.Usage()
|
_ = cmd.Usage()
|
||||||
_, _ = fmt.Fprintf(os.Stderr, "Command %s needs %d arguments minimum\n", cmd.Name(), MinArgs)
|
_, _ = fmt.Fprintf(os.Stderr, "Command %s needs %d arguments minimum: you provided %d non flag arguments: %q\n", cmd.Name(), MinArgs, len(args), args)
|
||||||
// os.Exit(1)
|
|
||||||
resolveExitCode(errorNotEnoughArguments)
|
resolveExitCode(errorNotEnoughArguments)
|
||||||
} else if len(args) > MaxArgs {
|
} else if len(args) > MaxArgs {
|
||||||
_ = cmd.Usage()
|
_ = cmd.Usage()
|
||||||
_, _ = fmt.Fprintf(os.Stderr, "Command %s needs %d arguments maximum\n", cmd.Name(), MaxArgs)
|
_, _ = fmt.Fprintf(os.Stderr, "Command %s needs %d arguments maximum: you provided %d non flag arguments: %q\n", cmd.Name(), MaxArgs, len(args), args)
|
||||||
// os.Exit(1)
|
resolveExitCode(errorTooManyArguments)
|
||||||
resolveExitCode(errorTooManyArguents)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -267,6 +267,15 @@ Options
|
||||||
|
|
||||||
Rclone has a number of options to control its behaviour.
|
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
|
Options which use TIME use the go time parser. A duration string is a
|
||||||
possibly signed sequence of decimal numbers, each with optional
|
possibly signed sequence of decimal numbers, each with optional
|
||||||
fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m". Valid
|
fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m". Valid
|
||||||
|
|
Loading…
Reference in a new issue