4 SWIG generation top-level script. Supports both local and remote generation
5 of SWIG bindings for multiple languages.
18 from swig_bot_lib import client
19 from swig_bot_lib import server
22 def process_args(args):
23 parser = argparse.ArgumentParser(
24 description='Run swig-bot client or server.')
26 # Create and populate subparser arguments for when swig_bot is
27 # run in client or server mode
28 subparsers = parser.add_subparsers(
29 help="Pass --help to a sub-command to print detailed usage")
30 client_parser = subparsers.add_parser("client",
31 help="Run SWIG generation client")
32 client.add_subparser_args(client_parser)
33 client_parser.set_defaults(func=run_client)
35 server_parser = subparsers.add_parser("server",
36 help="Run SWIG generation server")
37 server.add_subparser_args(server_parser)
38 server_parser.set_defaults(func=run_server)
40 # Arguments to control logging verbosity.
45 help="Increase logging verbosity level.")
47 options = parser.parse_args(args)
50 log_level = logging.DEBUG
52 log_level = logging.NOTSET
53 logging.basicConfig(level=log_level)
54 logging.info("logging is using level: %d", log_level)
59 def run_client(options):
60 logging.info("Running swig_bot in client mode")
61 client.finalize_subparser_options(options)
65 def run_server(options):
66 logging.info("Running swig_bot in server mode")
67 server.finalize_subparser_options(options)
70 if __name__ == "__main__":
71 options = process_args(sys.argv[1:])
73 if options.func is None:
75 "Unknown mode specified. Expected client or server.")
79 except KeyboardInterrupt as e:
80 logging.info("Ctrl+C received. Shutting down...")
82 except Exception as e:
83 error = traceback.format_exc()
84 logging.error("An error occurred running swig-bot.")