nim-confutils/tests/nested_commands.nim

69 lines
1.4 KiB
Nim

import
confutils, options
type
OuterCmd = enum
outerCmd1
outerCmd2
InnerCmd = enum
innerCmd1 = "Inner cmd 1"
innerCmd2
OuterOpt = enum
outerOpt1 = "Outer option 1"
outerOpt2 = "Outer option 2"
InnerOpt = enum
innerOpt1
innerOpt2
Conf = object
commonOptional: Option[string]
commonMandatory {.
desc: "A mandatory option"
abbr: "m" .}: int
case opt: OuterOpt
of outerOpt1:
case innerOpt: InnerOpt
of innerOpt1:
io1Mandatory: string
io1Optional: Option[int]
else:
discard
of outerOpt2:
ooMandatory: string
ooOptiona {.
defaultValue: "test"
desc: "Outer option optional" .}: string
case cmd {.command.}: OuterCmd
of outerCmd1:
case innerCmd: InnerCmd
of innerCmd1:
ic1Mandatory: string
ic1Optional {.
desc: "Delay in seconds"
abbr: "s" .}: Option[int]
of innerCmd2:
innerArg {.argument.}: string
of outerCmd2:
oc2Mandatory: int
let conf = load Conf
echo "commonOptional = ", conf.commonOptional
echo "commonMandatory = ", conf.commonMandatory
case conf.cmd
of outerCmd2:
echo "oc2Mandatory = ", conf.oc2Mandatory
of outerCmd1:
case conf.innerCmd:
of innerCmd1:
echo "ic1Mandatory = ", conf.ic1Mandatory
echo "ic1Optional = ", conf.ic1Optional
of innerCmd2:
discard