Skip to content

Commit 0329adb

Browse files
author
paskozdilar
committed
Add command argument to __main__
1 parent 9e3718e commit 0329adb

File tree

1 file changed

+19
-7
lines changed

1 file changed

+19
-7
lines changed

zrpc/__main__.py

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import logging
66
import os
77
import signal
8+
import sys
89

910
from zrpc.server import Server, rpc_method
1011
from zrpc.client import Client
@@ -22,7 +23,7 @@ def main(argv=None):
2223

2324
try:
2425
logging.basicConfig(level=logging.DEBUG if args.debug else logging.INFO)
25-
call(args)
26+
globals()[args.command](args)
2627
except KeyboardInterrupt:
2728
pass
2829
except BrokenPipeError:
@@ -43,27 +44,38 @@ def parse_args(argv=None):
4344
'socket directory '
4445
'(default: /tmp/zrpc_sockets)')
4546

46-
parser.add_argument('-d', '--debug',
47+
subparsers = parser.add_subparsers(title='command',
48+
dest='command')
49+
50+
call_parser = subparsers.add_parser(name='call',
51+
description='Call an RPC method.')
52+
53+
call_parser.add_argument('-d', '--debug',
4754
help='Turn on debug logs',
4855
action='store_true')
49-
parser.add_argument('-c', '--count',
56+
call_parser.add_argument('-c', '--count',
5057
help='Send N requests ("inf" for loop)',
5158
default=1,
5259
type=lambda x: float(x) if x == 'inf' else int(x))
53-
parser.add_argument('service',
60+
call_parser.add_argument('service',
5461
help='Service name',
5562
metavar='SERVICE')
56-
parser.add_argument('method',
63+
call_parser.add_argument('method',
5764
help='Method to call',
5865
metavar='METHOD')
59-
parser.add_argument('payload',
66+
call_parser.add_argument('payload',
6067
help='Payload to send [python object]',
6168
metavar='PAYLOAD',
6269
nargs='?',
6370
type=ast.literal_eval,
6471
default=None)
6572

66-
return parser.parse_args(argv)
73+
args = parser.parse_args(argv)
74+
if args.command is None:
75+
parser.print_help()
76+
sys.exit(1)
77+
else:
78+
return args
6779

6880

6981
def call(args):

0 commit comments

Comments
 (0)