Coverage for src/zapy/cli.py: 100%
25 statements
« prev ^ index » next coverage.py v7.4.1, created at 2024-02-10 19:35 +0000
« prev ^ index » next coverage.py v7.4.1, created at 2024-02-10 19:35 +0000
1import argparse
2import sys
3import textwrap
6class ZapyCLI:
8 def __init__(self) -> None:
9 parser = argparse.ArgumentParser(
10 description="Zapy CLI",
11 usage=textwrap.dedent(
12 """\
13 zapy <command> [<args>]
14 The most commonly used git commands are:
15 start_server Start the zapy service
16 connection Read or create connection config
17 """
18 ),
19 )
20 parser.add_argument("command", help="Subcommand to run")
21 # parse_args defaults to [1:] for args, but you need to
22 # exclude the rest of the args too, or validation will fail
23 args = parser.parse_args(sys.argv[1:2])
24 if args.command is None or not hasattr(self, args.command):
25 print("Unrecognized command")
26 parser.print_help()
27 sys.exit(1)
28 else:
29 # use dispatch pattern to invoke method with same name
30 getattr(self, args.command)()
31 sys.exit(0)
33 def start_server(self) -> None:
34 parser = argparse.ArgumentParser(description="Start the zapy service")
35 _ = parser.parse_args(sys.argv[2:])
36 from zapy.api.bootstrapper import start_server
38 start_server()
40 def connection(self) -> None:
41 parser = argparse.ArgumentParser(description="Read or create connection")
42 _ = parser.parse_args(sys.argv[2:])
43 from zapy.api import connection
45 conn_config = connection.load_server_config()
47 # print the json config
48 print(conn_config.model_dump_json())