From be5feead1469863982560b7cf75f5bfca627e21c Mon Sep 17 00:00:00 2001 From: "Kali Kaneko (leap communications)" Date: Tue, 27 Sep 2016 12:52:29 -0400 Subject: [feature] try to launch backend on cli commands --- src/leap/bitmask/cli/bitmask_cli.py | 15 ++++++++++++--- src/leap/bitmask/cli/command.py | 16 +++++++++------- src/leap/bitmask/cli/logs.py | 1 - 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/leap/bitmask/cli/bitmask_cli.py b/src/leap/bitmask/cli/bitmask_cli.py index 64fe74b..736e737 100755 --- a/src/leap/bitmask/cli/bitmask_cli.py +++ b/src/leap/bitmask/cli/bitmask_cli.py @@ -95,7 +95,6 @@ GENERAL COMMANDS: return defer.succeed(None) def version(self, raw_args): - print(Fore.GREEN + 'bitmaskctl: ' + Fore.RESET + '0.0.1') self.data = ['version'] return self._send(printer=self._print_version) @@ -117,10 +116,20 @@ GENERAL COMMANDS: value + Fore.RESET) +@defer.inlineCallbacks def execute(): cli = BitmaskCLI() - d = cli.execute(sys.argv[1:]) - d.addCallback(lambda _: reactor.stop()) + cli.data = ['version'] + yield cli._send( + timeout=0.1, printer=_null_printer, + errb=lambda: cli.start(None)) + cli.data = [] + yield cli.execute(sys.argv[1:]) + yield reactor.stop() + + +def _null_printer(*args): + pass def main(): diff --git a/src/leap/bitmask/cli/command.py b/src/leap/bitmask/cli/command.py index 36552c0..1694956 100644 --- a/src/leap/bitmask/cli/command.py +++ b/src/leap/bitmask/cli/command.py @@ -96,10 +96,10 @@ class Command(object): self.parser.print_help() return defer.succeed(None) - def _send(self, printer=_print_result): - d = self._conn.sendMsg(*self.data, timeout=60) + def _send(self, printer=_print_result, timeout=60, errb=None): + d = self._conn.sendMsg(*self.data, timeout=timeout) d.addCallback(self._check_err, printer) - d.addErrback(self._timeout_handler) + d.addErrback(self._timeout_handler, errb) return d def _error(self, msg): @@ -113,8 +113,10 @@ class Command(object): else: print Fore.RED + 'ERROR:' + '%s' % obj['error'] + Fore.RESET - def _timeout_handler(self, failure): - # TODO ---- could try to launch the bitmask daemon here and retry + def _timeout_handler(self, failure, errb): if failure.trap(ZmqRequestTimeoutError) == ZmqRequestTimeoutError: - print (Fore.RED + "[ERROR] Timeout contacting the bitmask daemon. " - "Is it running?" + Fore.RESET) + if callable(errb): + errb() + else: + print (Fore.RED + "[ERROR] Timeout contacting the bitmask " + "daemon. Is it running?" + Fore.RESET) diff --git a/src/leap/bitmask/cli/logs.py b/src/leap/bitmask/cli/logs.py index 11903ee..59ed64d 100644 --- a/src/leap/bitmask/cli/logs.py +++ b/src/leap/bitmask/cli/logs.py @@ -29,7 +29,6 @@ from twisted.python.procutils import which from leap.bitmask.cli import command from leap.common.config import get_path_prefix - class Logs(command.Command): -- cgit v1.2.3