From a648a8329cb4a0011afb0634fa9e1ef1f52637cc Mon Sep 17 00:00:00 2001 From: Daylin Morgan Date: Wed, 5 Feb 2025 01:21:45 -0600 Subject: [PATCH] fix: use prefix for vars --- src/hwylterm/hwylcli.nim | 16 ++++++---------- tests/cli/clis/flagKey.nim | 11 +++++++++++ tests/cli/tester.nim | 1 + todo.md | 6 +++--- 4 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 tests/cli/clis/flagKey.nim diff --git a/src/hwylterm/hwylcli.nim b/src/hwylterm/hwylcli.nim index 89a4575..f25b8a0 100644 --- a/src/hwylterm/hwylcli.nim +++ b/src/hwylterm/hwylcli.nim @@ -1138,9 +1138,9 @@ proc parse*[T](p: var OptParser, target: var KV[string, T]) = func shortLongCaseStmt(cfg: CliCfg, printHelpName: NimNode, version: NimNode): NimNode = var caseStmt = nnkCaseStmt.newTree() if NoNormalize notin cfg.settings: - caseStmt.add nnkCall.newTree(ident"optionNormalize", ident"key") + caseStmt.add nnkCall.newTree(ident"optionNormalize", ident"hwylKey") else: - caseStmt.add ident"key" + caseStmt.add ident"hwylKey" caseStmt.add nnkOfBranch.newTree(newLit(""), quote do: hwylCliError("empty flag not supported currently")) @@ -1170,7 +1170,7 @@ func shortLongCaseStmt(cfg: CliCfg, printHelpName: NimNode, version: NimNode): N caseStmt.add branch - caseStmt.add nnkElse.newTree(quote do: hwylCliError("unknown flag: [b]" & key)) + caseStmt.add nnkElse.newTree(quote do: hwylCliError("unknown flag: [b]" & hwylKey)) result = nnkStmtList.newTree(caseStmt) @@ -1393,6 +1393,7 @@ func positionalArgsOfBranch(cfg: CliCfg): NimNode = inc nArgs parseArgs(p, result) + func hwylCliImpl(cfg: CliCfg): NimNode = let version = cfg.version or newLit("") @@ -1438,16 +1439,11 @@ func hwylCliImpl(cfg: CliCfg): NimNode = # TODO: first key needs to be normalized? # TODO: don't use getopt? use p.next() instead? parserBody.add nnkForStmt.newTree( - ident"kind", ident"key", ident"val", - # nnkCall.newTree(nnkDotExpr.newTree(optParser,ident("getopt"))), + ident"hwylKind", ident"hwylKey", ident"hwylVal", nnkCall.newTree(ident"getopt", optParser), nnkStmtList.newTree( - # # for debugging.. - # quote do: - # echo `kind`,"|",`key`,"|",`val` - # , nnkCaseStmt.newTree( - ident"kind", + ident"hwylKind", nnkOfBranch.newTree(ident("cmdError"), quote do: hwylCliError(p.message)), nnkOfBranch.newTree(ident("cmdEnd"), quote do: hwylCliError("reached cmdEnd unexpectedly.")), positionalArgsOfBranch(cfg), diff --git a/tests/cli/clis/flagKey.nim b/tests/cli/clis/flagKey.nim new file mode 100644 index 0000000..a575397 --- /dev/null +++ b/tests/cli/clis/flagKey.nim @@ -0,0 +1,11 @@ +import hwylterm, hwylterm/hwylcli + +hwylCli: + name "base" + flags: + key "a flag named 'key'" + run: + if key: + echo "key set" + else: + echo "key not set" diff --git a/tests/cli/tester.nim b/tests/cli/tester.nim index 25a0640..724924d 100644 --- a/tests/cli/tester.nim +++ b/tests/cli/tester.nim @@ -26,6 +26,7 @@ suite "flags": "enumFlag", "--color black", "error failed to parse value for color as enum: black expected one of: red,blue,green", ) + okWithArgs("flagKey", "--key", "key set") suite "subcommands": diff --git a/todo.md b/todo.md index 2872057..4bd1566 100644 --- a/todo.md +++ b/todo.md @@ -15,13 +15,13 @@ ### cli generator - [x] add InferShortFlags setting -- [ ] ShowHelp setting should occur after "a hwylCliError" +- [x] add support for types(metavars)/defaults/required in help output +- [ ] ShowHelp setting should also occur after "a hwylCliError" could be by default (see `program --help` for more info.) - [ ] consider support "more verbose" help i.e. -h vs --help giving different results -- [ ] add support for types(metavars)/defaults/required in help output - [ ] add support for E/env param for flags to add custom env_var (in help (env: OPTIONAL_ENV_VAR)) inject this code in the same place as the "default" setting -- [ ] BUG: flag can't be `key` +- [x] BUG: flag can't be `key` - [ ] consider default (or opt in) "help subcmd" > app help (show all help?) > app help same as app --help