-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwscli.py
53 lines (40 loc) · 1.59 KB
/
wscli.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import argparse
from string import Template
import poster
# dip
class doitAction(argparse.Action):
def __init__(self, option_strings, dest, nargs=None, **kwargs):
if nargs is not None:
raise ValueError("nargs not allowed")
super(doitAction, self).__init__(option_strings, dest, **kwargs)
def __call__(self, parser, namespace, values, option_string=None):
print "doit trying to do '%s'" % values
a = vars(namespace)
print a
print getattr( namespace, 'animal')
# print('%r %r %r' % (namespace, values, option_string))
# setattr(namespace, self.dest, values)
class WebServiceCLI:
def test(self):
Environments = {
'server1' : 'http://blah1.com',
'server2' : 'http://blah2.com',
}
Requests = {
'blah' : Template("Blah: ${animal}nix has $num legs on $server"),
'bleh' : Template("Bleh: ${animal}nix has $num legs on $server"),
}
parser = argparse.ArgumentParser()
# USAGE
parser.add_argument("--usage", action='store_const', const=True)
# Custom action
parser.add_argument("--doit", action=doitAction )
# Required arguments
parser.add_argument("--num", type=int, required=True)
# Optional arguments
parser.add_argument("--animal")
parser.add_argument("--server", choices=Environments.keys() )
parser.add_argument("--request", choices=Requests.keys() )
args = parser.parse_args()
if __name__ == "__main__":
WebServiceCLI().test()