Migrating from argparse
¶
nargs
¶
parser.add_argument("--foo", nargs=2)
parser.add_argument("--bar", nargs="?", const="c", default="d")
parser.add_argument("infile", nargs="?", type=argparse.FileType("r"), default=sys.stdin)
parser.add_argument("--baz", nargs="*")
parser.add_argument("--boo", nargs="+")
cmd.flag(long="foo", values=[("A", float), ("B", int)]) # PowerCLI requires hints and converters
# It's not possible to recreate `--bar` 1:1 in PowerCLI
cmd.pos(name="infile", into=lambda filepath: pathlib.Path(filepath).read_bytes(), default=lambda _ctx: sys.stdin.read())
# It's not possible to recreate `--baz` 1:1 in PowerCLI
cmd.flag(long="boo", values[("A", float), ...]) # PowerCLI requires hints and converters
metavar
¶
parser.add_argument("-x", nargs=2, metavar=("bar", "baz"))
cmd.flag(short="x", values=[("bar", str), ("baz", str)])
Mutual exclusion¶
group1 = parser.add_mutually_exclusive_group()
group1.add_argument('--foo', action='store_true')
group1.add_argument('--bar', action='store_false')
group2 = parser.add_mutually_exclusive_group(required=True)
group2.add_argument('--moo', action='store_true')
group2.add_argument('--meow', action='store_false')
cmd.add_args(
one_of(
Flag(long="foo"),
Flag(long="bar"),
)
)
cmd.add_args(
one_of(
Flag(long="moo"),
Flag(long="meow"),
),
required=static(True)
)