67 lines
1.9 KiB
Python
67 lines
1.9 KiB
Python
#!/usr/bin/env python
|
|
|
|
"""
|
|
SWIG generation top-level script. Supports both local and remote generation
|
|
of SWIG bindings for multiple languages.
|
|
"""
|
|
|
|
# Python modules
|
|
import argparse
|
|
import logging
|
|
import sys
|
|
import traceback
|
|
|
|
# LLDB modules
|
|
import use_lldb_suite
|
|
|
|
def process_args(args):
|
|
parser = argparse.ArgumentParser(
|
|
description='Run swig-bot client or server.')
|
|
|
|
# Arguments to control whether swig-bot runs as a client or server.
|
|
parser.add_argument(
|
|
"--mode",
|
|
required=True,
|
|
choices=["client", "server"],
|
|
help="Run swig_bot in either client or server mode.")
|
|
|
|
# Arguments to control logging verbosity.
|
|
parser.add_argument(
|
|
"--verbose", "-v",
|
|
action="store_true",
|
|
default=False,
|
|
help="Increase logging verbosity level.")
|
|
|
|
(options, remaining) = parser.parse_known_args(args)
|
|
# Set logging level.
|
|
if options.verbose:
|
|
log_level = logging.DEBUG
|
|
else:
|
|
log_level = logging.NOTSET
|
|
logging.basicConfig(level=log_level)
|
|
logging.info("logging is using level: %d", log_level)
|
|
|
|
return (options, remaining)
|
|
|
|
if __name__ == "__main__":
|
|
(options, remaining) = process_args(sys.argv[1:])
|
|
try:
|
|
if options.mode == "client":
|
|
logging.info("Running swig_bot in client mode")
|
|
from swig_bot_lib import client
|
|
client.run(remaining)
|
|
elif options.mode == "server":
|
|
logging.info("Running swig_bot in server mode")
|
|
from swig_bot_lib import server
|
|
server.run(remaining)
|
|
else:
|
|
logging.error("Unknown mode specified. Expected client or server.")
|
|
sys.exit(-1)
|
|
except KeyboardInterrupt as e:
|
|
logging.info("Ctrl+C received. Shutting down...")
|
|
sys.exit(-1)
|
|
except Exception as e:
|
|
error = traceback.format_exc()
|
|
logging.error("An error occurred running swig-bot.")
|
|
logging.error(error)
|