mirror of
https://github.com/clap-rs/clap
synced 2024-12-14 14:52:33 +00:00
1.3 KiB
1.3 KiB
These are cases which could be detected by clap
, and potentially warn at compile time. Maybe even with a nice web URL to more info.
Abrv. Syntax
First, a little about the syntax to understand the setup of rule. This syntax will make each rule more concise so we don't have to write an entire clap
definition.
Arg Types
--opt
is an option--flag
is a flag#
(i.e.1
or2
) is a positional argumentval
is an option value
Modifiers
Can be used on val
or Arg types
*
: zero or more+
: one or more?
: zero or one{#,#}
: # to # times (i.e.{1,4}
is one to four times)<>
: required=
: requires equals- Ends in
,
: requires delimiter (foo,bar)
: values can only befoo
orbar
--opt val? 1
Ambiguous Uses
$ prog --opt foo
# is foo option val or positional?
Non-Ambiguous Uses
$ prog 1 --opt
$ prog --opt -- 1
Fixes
Require equals on --opt
$ prog --opt foo
# foo is positional
$ prog --opt=val foo
--opt val+ 1
Ambiguous Uses
$ prog --opt foo bar
# is bar option val or positional?
Non-Ambiguous Uses
$ prog 1 --opt val
$ prog --opt val -- 1
Fixes
--opt
only one val per occurrence
$ prog --opt foo bar
# bar is positional
$ prog --opt val bar --opt foo
# bar is positional