pargv/pargs.py

56 lines
1.3 KiB
Python

import sys
def parse_args(argv=None):
"""
Returns a tuple of (args, kwargs) from a given list of command line arguments.
"""
argv = argv if argv else sys.argv
print(argv)
args = []
for arg in argv:
if arg.startswith('-'):
break
args.append(arg)
argv = argv[len(args):]
kwargs = {}
values = []
for arg in argv:
if not arg.startswith('-'):
values.append(arg)
else:
if len(values):
kwargs[key] = values
values = []
key = arg.lstrip('-').replace('-', '_')
if arg.startswith('--'):
if '=' in arg:
key, value = arg.split('=')
values.append(value)
kwargs[key] = values
else:
kwargs[key] = True
elif arg.startswith('-'):
for k in key:
kwargs[k] = True
if len(values):
kwargs[key] = values
return (args, kwargs)
if __name__ == '__main__':
args, kwargs = parse_args([
'/home/pat/Git/pargs/pargs.py',
'command',
'positional',
'--flag',
'--optional=value',
'test',
'--output',
'filename',
'-flg'
])
print(args)
print(kwargs)