From dffd5cb0aa50277cd8b94639c2af57c3fd96a781 Mon Sep 17 00:00:00 2001 From: ee7 <45465154+ee7@users.noreply.github.com> Date: Fri, 9 Oct 2020 14:15:12 +0200 Subject: [PATCH] Fix(cli): Show error message for missing value For example, the command: `canonical_data_syncer --verbosity` Now produces: Error: '--verbosity' was given without a value And shows the help message. Previously, the program silently ignored the missing value. Fixes: #37 --- src/cli.nim | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/cli.nim b/src/cli.nim index de559d76..5c7e7d16 100644 --- a/src/cli.nim +++ b/src/cli.nim @@ -58,6 +58,11 @@ proc prefix(kind: CmdLineKind): string = of cmdLongOption: "--" of cmdArgument, cmdEnd: "" +proc showErrorForMissingVal(kind: CmdLineKind, key: string, val: string) = + if val.len == 0: + let msg = &"'{kind.prefix}{key}' was given without a value" + showError(msg) + proc parseMode(kind: CmdLineKind, key: string, val: string): Mode = case val.toLowerAscii of "c", "choose": @@ -96,12 +101,15 @@ proc parseArguments*: Arguments = of cmdLongOption, cmdShortOption: case key of ExerciseArgument.short, ExerciseArgument.long: + showErrorForMissingVal(kind, key, val) result.exercise = some(val) of CheckArgument.short, CheckArgument.long: result.action = actCheck of ModeArgument.short, ModeArgument.long: + showErrorForMissingVal(kind, key, val) result.mode = parseMode(kind, key, val) of VerbosityArgument.short, VerbosityArgument.long: + showErrorForMissingVal(kind, key, val) result.verbosity = parseVerbosity(kind, key, val) of HelpArgument.short, HelpArgument.long: showHelp()