137
|
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
|