pargv/pargv.py
2023-08-14 11:25:25 +09:00

49 lines
1.2 KiB
Python

import sys
__version__ = '0.1.3'
def parse_args(argv=None):
"""
Returns a tuple of (args, kwargs) from a given list of command line arguments.
Defaults to using `sys.argv`.
"""
argv = argv if argv else sys.argv
args = []
for arg in argv:
if arg.startswith('-'):
break
args.append(arg.replace('-', '_'))
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[:2].lstrip('-') + arg[2:].replace('-', '_')
if arg.startswith('--'):
if '=' in arg:
key, value = key.split('=')
values.append(value)
kwargs[key] = values
else:
kwargs[key] = True
elif arg.startswith('-'):
for k in key:
kwargs[k] = True
key = arg[-1]
if len(values):
kwargs[key] = values
for k, v in kwargs.items():
if isinstance(v, list) and len(v) == 1:
kwargs[k] = v[0]
return (args, kwargs)