# HG changeset patch # User Jeff Hammel # Date 1307457065 25200 # Node ID 8ffddc58dc81f351d2ba89cb6560f71907266c05 # Parent 66382932514ea34f23b8c8726f430a1b4b9b52c3 make the arg parser work diff -r 66382932514e -r 8ffddc58dc81 pyloader/parser.py --- a/pyloader/parser.py Mon Jun 06 11:43:20 2011 -0700 +++ b/pyloader/parser.py Tue Jun 07 07:31:05 2011 -0700 @@ -1,9 +1,48 @@ #!/usr/bin/env python """ -free-form command-line parser +free-form arg parser + +python parser.py foo -bar --fleem blah -gaz hi --flarg=play +['foo', 'hi'] +['bar', 'gaz'] +{'fleem': 'blah', 'flarg': 'play'} """ -def parse(args, **kwargs): - parser = OptionParser(**kwargs) - options, args = parser.parse_args() +def parse(args): + _args1 = [] + _args2 = [] + kw = {} + key = None + for arg in args: + if arg.startswith('-'): + if key: + raise Exception + if arg.startswith('--'): + if arg.startswith('---'): + raise Exception + arg = arg.lstrip('-') + if '=' in arg: + key, value = arg.split('=', 1) + kw[key] = value + key = None + else: + key = arg + else: + _args2.append(arg[1:]) + else: + if key: + kw[key] = arg + key = None + else: + _args1.append(arg) + if key: + raise Exception + return _args1, _args2, kw + +if __name__ == '__main__': + import sys + args, positional_args, kwargs = parse(sys.argv[1:]) + print args + print positional_args + print kwargs