Mercurial > hg > config
comparison python/dictarg.py @ 0:f3ab51c79813
adding configuration from https://svn.openplans.org/svn/config_jhammel/
| author | k0s <k0scist@gmail.com> |
|---|---|
| date | Thu, 15 Oct 2009 11:41:26 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:f3ab51c79813 |
|---|---|
| 1 #!/usr/bin/python | |
| 2 | |
| 3 import sys | |
| 4 | |
| 5 def dictarg(adict, argv=sys.argv[1:]): | |
| 6 | |
| 7 shopts = {} | |
| 8 | |
| 9 # build list of keys | |
| 10 for i in adict.keys(): | |
| 11 for j in i: | |
| 12 s = str(j) | |
| 13 if len(s) == 1: | |
| 14 if shopts.has_key(s): | |
| 15 continue | |
| 16 shopts[s] = i | |
| 17 break | |
| 18 else: | |
| 19 print >> sys.stderr, "dictarg: couldn't generate key for '%s'" % i | |
| 20 sys.exit(1) | |
| 21 | |
| 22 optstring = "?" | |
| 23 for i in shopts.keys(): | |
| 24 optstring += i + ':' # all these options should have arguments | |
| 25 | |
| 26 # look for command line args | |
| 27 import getopt | |
| 28 | |
| 29 opts, args = getopt.getopt(argv, optstring) | |
| 30 | |
| 31 if ('-?', '') in opts: | |
| 32 print 'Options:' | |
| 33 for i in shopts: | |
| 34 print '-%s %s [%s]' % (i, shopts[i], adict[shopts[i]]) | |
| 35 sys.exit(0) | |
| 36 | |
| 37 for o, v in opts: | |
| 38 o = o[1:] # cut off the dash | |
| 39 adict[shopts[o]] = v | |
| 40 | |
| 41 # test if invoked from command line | |
| 42 if __name__ == '__main__': | |
| 43 adict = {} | |
| 44 for i in sys.argv: | |
| 45 adict[i] = len(i) | |
| 46 | |
| 47 # print the help | |
| 48 dictarg(adict, ['-?']) | |
| 49 | |
| 50 # test functionality | |
| 51 print 'Enter test arguments: ', | |
| 52 line = sys.stdin.readline()[:-1].split(' ') | |
| 53 dictarg(adict, line) | |
| 54 print adict |
