Skip to content

Commit

Permalink
Fix(cli): Show error message for missing value
Browse files Browse the repository at this point in the history
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: exercism#37
  • Loading branch information
ee7 committed Oct 9, 2020
1 parent a0b5268 commit dffd5cb
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/cli.nim
Original file line number Diff line number Diff line change
Expand Up @@ -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":
Expand Down Expand Up @@ -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()
Expand Down

0 comments on commit dffd5cb

Please sign in to comment.