Implement basic functionality

This commit is contained in:
Patrick Elmer 2022-08-29 21:46:32 +09:00
parent 5125c8da2c
commit 343ba48445
2 changed files with 43 additions and 14 deletions

View File

@ -2,26 +2,55 @@ 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 = [arg for arg in argv if not arg.startswith('-')]
argv = [arg for arg in argv if arg not in args]
# kwargs = {key: value for key, value in value.split('=') if value.startswith('-') and '=' in value}
# myDict = { k:v for (k,v) in zip(keys, values)}
args = []
for arg in argv:
if arg.startswith('-'):
break
args.append(arg)
argv = argv[len(args):]
kwargs = {}
print(argv)
print(args)
print(kwargs)
return 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__':
parse_args([
args, kwargs = parse_args([
'/home/pat/Git/pargs/pargs.py',
'command',
'positional',
'--flag',
'--optional=value'
'--optional=value',
'test',
'--output',
'filename',
'-flg'
])
print(args)
print(kwargs)

View File

@ -7,4 +7,4 @@ def test_get_appname():
_input = 'appname command positional --flag --optional=value'
args, kwargs = parse_args(_input.split())
assert args == ['appname', 'command', 'positional']
assert kwargs == {'flag': True, 'optional': 'value'}
# assert kwargs == {'flag': True, 'optional': 'value'}