pargv/pargv.py
2023-08-19 21:46:00 +09:00

47 lines
1.1 KiB
Python

import sys
__version__ = '0.2.1'
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('-', '_'))
kwargs = {}
value = None
for arg in argv[len(args):]:
if not arg.startswith('-'):
if isinstance(kwargs[key], bool):
kwargs[key] = arg
elif isinstance(kwargs[key], str):
kwargs[key] = [kwargs[key]] + [arg]
elif isinstance(kwargs[key], list):
kwargs[key].append(arg)
continue
key = arg[:2].lstrip('-') + arg[2:].replace('-', '_')
if '=' in key:
key, value = key.split('=')
if not arg.startswith('--'):
for k in key[:-1]:
kwargs[k] = True
key = key[-1]
kwargs[key] = value if value else True
value = None
return (args, kwargs)