mirror of
https://github.com/clap-rs/clap
synced 2024-12-15 07:12:32 +00:00
59497629e8
There were fewer occasions than I expected where the use of `multiple_values` was superfluous and we could instead use the more predictable `multiple_occurrences`. In terms of the remaining `multiple` split work, #1772 will take care of the derive behavior and #2692 will resolve any remaining issues with values vs occurrences in positional arguments. Fixes #2816
98 lines
3.2 KiB
YAML
98 lines
3.2 KiB
YAML
name: yaml_app
|
|
version: "1.0"
|
|
about: an example using a .yaml file to build a CLI
|
|
author: Kevin K. <kbknapp@gmail.com>
|
|
|
|
# AppSettings can be defined as a list and are **not** ascii case sensitive
|
|
settings:
|
|
- ArgRequiredElseHelp
|
|
|
|
# All Args must be defined in the 'args:' list where the name of the arg, is the
|
|
# key to a Hash object
|
|
args:
|
|
# The name of this argument, is 'opt' which will be used to access the value
|
|
# later in your Rust code
|
|
- opt:
|
|
about: example option argument from yaml
|
|
short: o
|
|
long: option
|
|
multiple_occurrences: true
|
|
takes_value: true
|
|
- pos:
|
|
about: example positional argument from yaml
|
|
index: 1
|
|
# A list of possible values can be defined as a list
|
|
possible_values:
|
|
- fast
|
|
- slow
|
|
- flag:
|
|
about: demo flag argument
|
|
short: F
|
|
multiple_occurrences: true
|
|
takes_value: true
|
|
global: true
|
|
# Conflicts, mutual overrides, and requirements can all be defined as a
|
|
# list, where the key is the name of the other argument
|
|
conflicts_with:
|
|
- opt
|
|
requires:
|
|
- pos
|
|
- mode:
|
|
long: mode
|
|
about: shows an option with specific values
|
|
# possible_values can also be defined in this list format
|
|
possible_values: [ vi, emacs ]
|
|
takes_value: true
|
|
- mvals:
|
|
long: mult-vals
|
|
about: demos an option which has two named values
|
|
# value names can be described in a list, where the help will be shown
|
|
# --mult-vals <one> <two>
|
|
value_names:
|
|
- one
|
|
- two
|
|
- minvals:
|
|
long: min-vals
|
|
multiple_values: true
|
|
about: you must supply at least two values to satisfy me
|
|
min_values: 2
|
|
- maxvals:
|
|
long: max-vals
|
|
multiple_values: true
|
|
about: you can only supply a max of 3 values for me!
|
|
max_values: 3
|
|
|
|
# All subcommands must be listed in the 'subcommand:' object, where the key to
|
|
# the list is the name of the subcommand, and all settings for that command are
|
|
# are part of a Hash object
|
|
subcommands:
|
|
# The name of this subcommand will be 'subcmd' which can be accessed in your
|
|
# Rust code later
|
|
- subcmd:
|
|
about: demos subcommands from yaml
|
|
version: "0.1"
|
|
author: Kevin K. <kbknapp@gmail.com>
|
|
# Subcommand args are exactly like App args
|
|
args:
|
|
- scopt:
|
|
short: B
|
|
multiple_occurrences: true
|
|
about: example subcommand option
|
|
takes_value: true
|
|
- scpos1:
|
|
about: example subcommand positional
|
|
index: 1
|
|
|
|
# ArgGroups are supported as well, and must be specified in the 'groups:'
|
|
# object of this file
|
|
groups:
|
|
# the name of the ArgGoup is specified here
|
|
- min-max-vals:
|
|
# All args and groups that are a part of this group are set here
|
|
args:
|
|
- minvals
|
|
- maxvals
|
|
# setting conflicts is done the same manner as setting 'args:'
|
|
#
|
|
# to make this group required, you could set 'required: true' but for
|
|
# this example we won't do that.
|