0

Is it possible to do something along the lines of:

Usage: 
  program submit [options]

Options:
  --user <email>            Users email address
  --documents <document>...  Documents to submit (can enter multiple)

submit --user Austin --documents doc1.txt --documents doc2.txt 

This would then provide the following JSON:

{
  submit: True,
  --user: "Austin",
  --documents: ["doc1.txt", "doc2.txt"]
}

I'm aware that having repeating optional arguments is possible, I would just really prefer to specify so inside the options description rather than having to do:

Usage:
  program submit [--user <email>] [--documents <document>]...

Can someone tell me how to achieve this if it's possible?

arc
  • 477
  • 2
  • 8
  • 14

1 Answers1

0

It is kind of a hack, but it should work:

"""
Usage:
  program submit [options]

Options:
  --user <email>            Users email address
  --documents <document>...  Documents to submit (can enter multiple)

submit --user Austin --documents doc1.txt --documents doc2.txt
"""

from docopt import docopt

if __name__ == '__main__':
    arguments = docopt(__doc__.replace('[options]',
                       '[options] [--documents <document>]...'))
    print(arguments)
J. P. Petersen
  • 4,871
  • 4
  • 33
  • 33