aboutsummaryrefslogtreecommitdiff
path: root/clap/examples/17_yaml.yml
blob: b0d58b3933a6a889e8dbdc96c82f387a38c41ca0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
name: yml_app
version: "1.0"
about: an example using a .yml 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:
        help: example option argument from yaml
        short: o
        long: option
        multiple: true
        takes_value: true
    - pos:
        help: example positional argument from yaml
        index: 1
        # A list of possible values can be defined as a list
        possible_values:
            - fast
            - slow
    - flag:
        help: demo flag argument
        short: F
        multiple: 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
        help: 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
        help: 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: true
        help: you must supply at least two values to satisfy me
        min_values: 2
    - maxvals:
        long: max-vals
        multiple: true
        help: 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: true
                help: example subcommand option
                takes_value: true
            - scpos1:
                help: example subcommand positional
                index: 1

# ArgGroups are supported as well, and must be sepcified 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.