I'd like to design my command line application in a way that one option, let's call it comment, can be specified several times, e.g.,
$ ./my_app.py --comment="Comment 1" --comment="Comment 2"
Can this be done with docopt? I checked the docopt homepage but couldn't find any reference to multiple occurences of the same optional argument.
For reference, the official docs can be found here at github.
To answer your specific question, you can use an ellipse ...
with your optional option [--my-option]
and specify that your option takes an argument.
I.e. [--my-option=ARG]...
or [--my-option=<arg>]...
Example:
"""
Usage:
my_program [--comment=ARG]... FILE
Arguments:
FILE An argument for passing in a file.
Options:
--comment Zero or more comments
"""
By specifying it as [--comment=<arg>]...
you ensure that opt['--comment'] is a list of all the specified comments.
Executing: my_program --comment=ASDF --comment=QWERTY my_file
Leads to:
if __name__ == '__main__':
opts = docopt(__doc__)
opts['--comment'] == ['ASDF', 'QWERTY']
opts['FILE'] == 'my_file'
You can use ...
to indicate a repeating element and [ ]
to indicate that it is optional:
my_program [comment]...
This indicates comment
is optional and can be repeated.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With