pass preSub/postSub down to children commands

This commit is contained in:
Daylin Morgan 2024-11-21 09:37:37 -06:00
parent ef573dc0f8
commit 186dab6d84
Signed by: daylin
GPG key ID: 950D13E9719334AD
2 changed files with 9 additions and 3 deletions

View file

@ -516,8 +516,13 @@ func pasrseCliAlias(cfg: var CliCfg, node: NimNode) =
func propagate(c: var CliCfg) =
for child in c.subcommands.mitems:
child.pre = c.preSub
child.post = c.postSub
# push the preSub to the lowest subcommand
if child.subcommands.len != 0 and child.preSub == nil:
child.preSub = c.preSub
child.postSub = c.postSub
else:
child.pre = c.preSub
child.post = c.postSub
child.inheritFrom(c)
propagate(child)

View file

@ -25,7 +25,7 @@ hwylCli:
? "path to config file"
* @["config.yml"]
preSub:
echo "this is run after subcommand parsing but before its run block"
echo "this is run after subcommand parsing but before final run block"
echo fmt"{yes=}, {color=}"
run:
echo "this is always run prior to subcommand parsing"
@ -53,6 +53,7 @@ hwylCli:
flags:
^config
run:
echo "hello from `example one subsub` command"
echo fmt"{color=}"
run: