From a055659910ad0c313c3bda8136feb2c6b9e36fa7 Mon Sep 17 00:00:00 2001 From: Giorgos Korfiatis <gkorf@grnet.gr> Date: Fri, 4 Sep 2015 15:59:25 +0300 Subject: [PATCH] Add debug option in script --- agkyra/gui.py | 4 ++-- agkyra/protocol.py | 14 +++++++++++--- agkyra/scripts/agkyra | 31 ++++++++++++++++++++++--------- 3 files changed, 35 insertions(+), 14 deletions(-) diff --git a/agkyra/gui.py b/agkyra/gui.py index c13ca35..196f2c8 100644 --- a/agkyra/gui.py +++ b/agkyra/gui.py @@ -96,9 +96,9 @@ class GUI(WebSocketBaseClient): LOG.debug('GUI finished, close GUI wrapper connection') -def run(callback): +def run(callback, debug): """Prepare SessionHelper and GUI and run them in the proper order""" - launch_server(callback) + launch_server(callback, debug) LOG.info('Client blocks until session is ready') session = SessionHelper().wait_session_to_load() assert session, 'UI server failed to load...' diff --git a/agkyra/protocol.py b/agkyra/protocol.py index dcedfcb..07db742 100644 --- a/agkyra/protocol.py +++ b/agkyra/protocol.py @@ -711,13 +711,21 @@ class WebSocketProtocol(WebSocket): self.terminate() -def launch_server(callback): +def launch_server(callback, debug): """Launch the server in a separate process""" LOG.info('Start SessionHelper session') if utils.iswin(): - subprocess.Popen([callback, "server"], + command = [callback] + if debug: + command.append('-d') + command.append("server") + subprocess.Popen(command, close_fds=True) else: pid = os.fork() if not pid: - os.execlp(callback, callback, "server") + command = [callback, callback] + if debug: + command.append('-d') + command.append("server") + os.execlp(*command) diff --git a/agkyra/scripts/agkyra b/agkyra/scripts/agkyra index e76231a..62c11af 100755 --- a/agkyra/scripts/agkyra +++ b/agkyra/scripts/agkyra @@ -16,6 +16,7 @@ import os import sys +import argparse try: from agkyra import config @@ -33,11 +34,16 @@ FORMATTER = logging.Formatter( "%(name)s:%(lineno)s %(levelname)s:%(asctime)s:%(message)s") HANDLER.setFormatter(FORMATTER) LOGGER.addHandler(HANDLER) -LOGGER.setLevel(logging.INFO) CALLBACK = os.path.realpath(sys.argv[0]) -def run_server(): +def set_debug(debug): + level = logging.DEBUG if debug else logging.INFO + LOGGER.setLevel(level) + + +def run_server(debug): + set_debug(debug) from agkyra.protocol import SessionHelper LOGGER.debug('Start the session helper') helper = SessionHelper() @@ -50,21 +56,28 @@ def run_server(): LOGGER.debug('Session Helper is now down') -def run_gui(): +def run_gui(debug): + set_debug(debug) from agkyra import gui - gui.run(callback=CALLBACK) + gui.run(callback=CALLBACK, debug=debug) DISPATCH = { 'server': run_server, 'gui': run_gui, } +parser = argparse.ArgumentParser(description='Agkyra syncer launcher') +parser.add_argument('--debug', '-d', action='store_true', + help="set logging level to 'debug'") +parser.add_argument('component', nargs="?", default="gui", + help="run 'server' or 'gui' (default)") + def main(): - if len(sys.argv) > 1: - arg = sys.argv[1] - else: - arg = 'gui' - DISPATCH[arg]() + args = parser.parse_args() + debug = args.debug + set_debug(debug) + component = args.component + DISPATCH[component](debug) if __name__ == "__main__": main() -- GitLab