Skip to content

Commit 6ba7d1f

Browse files
committed
start cli script
1 parent 7feb2b1 commit 6ba7d1f

File tree

3 files changed

+52
-0
lines changed

3 files changed

+52
-0
lines changed

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
clint==0.2.4

sunlight/__init__.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,15 @@
2929
import sunlight.service
3030

3131

32+
def available_services():
33+
return {
34+
'openstates': openstates,
35+
'capitolwords': capitolwords,
36+
'congress': congress,
37+
'influenceexplorer': influenceexplorer,
38+
}
39+
40+
3241
def _attempt_to_load_apikey():
3342
"""
3443
This function (which will be auto-called on import of :mod:`sunlight`),

sunlight/cli.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import json
2+
import sys
3+
4+
from clint import args
5+
import sunlight
6+
7+
def main():
8+
9+
services = sunlight.available_services()
10+
service = services.get(args.get(0), None)
11+
12+
if service is not None:
13+
14+
available_methods = [m for m in dir(service) if not m.startswith('_') and m != 'get']
15+
16+
if args.get(1) in available_methods:
17+
18+
params = {g[0][2:]: g[1].get(0) for g in args.grouped.items()[1:] if g[0].startswith('--')}
19+
resp = getattr(service, args.get(1))(**params)
20+
sys.stdout.write(json.dumps(resp, indent=2) + '\n')
21+
22+
else:
23+
help(methods=available_methods) # missing or invalid method parameter
24+
25+
else:
26+
help(services=services) # missing or invalid service parameter
27+
28+
def help(services=None, methods=None):
29+
sys.stderr.write("Usage: sunlight <service> <method> [<args>, ...]\n")
30+
31+
if services:
32+
sys.stderr.write("Available services:\n")
33+
for s in services:
34+
sys.stderr.write(" %s\n" % s)
35+
36+
if methods:
37+
sys.stderr.write("Available methods:\n")
38+
for m in methods:
39+
sys.stderr.write(" %s\n" % m)
40+
41+
if __name__ == "__main__":
42+
main()

0 commit comments

Comments
 (0)