I am trying to do this:
$ myfile.py config --user 'abc1' --password 'def1' --configname 'first' config config --user 'abc2' --password 'def2' --configname 'second'
config is a subcommand (as described in argparse.ArgumentParser documentation adding subcommands in argparse).
This should allow me to collect individual confignames, username and password for any number of configs (in this case 2) from commandline.
These I will persist as
$ cat first
[user]
abc1
[password]
def1
$ cat second
[user]
abc2
[password]
def2
When I tried this I got
error: unrecognized arguments:
How can I achieve similar functionality.
Here is my code:
>>> import argparse
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> subparsers = parser.add_subparsers(help='sub-command help')
>>> # create the parser for the "a" command
... parser_a = subparsers.add_parser('config', help='a help')
>>> parser_a.add_argument('--user', required=True)
_StoreAction(option_strings=['--user'], dest='user', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser_a.add_argument('--password', required=True)
_StoreAction(option_strings=['--password'], dest='password', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser_a.add_argument('--configname', required=True)
_StoreAction(option_strings=['--configname'], dest='configname', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args(['config', '--user', 'abc1', '--password', 'def1', '--configname', 'first'])
Namespace(configname='first', password='def1', user='abc1')
>>>
>>>
>>>
>>> import argparse
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> subparsers = parser.add_subparsers(help='sub-command help')
>>> # create the parser for the "a" command
... parser_a = subparsers.add_parser('config', help='a help')
>>> parser_a.add_argument('--user', required=True)
_StoreAction(option_strings=['--user'], dest='user', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser_a.add_argument('--password', required=True)
_StoreAction(option_strings=['--password'], dest='password', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser_a.add_argument('--configname', required=True)
_StoreAction(option_strings=['--configname'], dest='configname', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args(['config', '--user', 'abc1', '--password', 'def1', '--configname', 'first', 'config', '--user', 'abc2', '--password', 'def2', '--configname', 'second'])
usage: PROG [-h] {config} ...
PROG: error: unrecognized arguments: config