From cb770ffee965a2e5d623e6c9f79d554d2efdc857 Mon Sep 17 00:00:00 2001 From: derAnfaenger Date: Fri, 1 Sep 2017 16:27:46 +0200 Subject: [PATCH] irc-mirror.py: Allow optional provisioning. To do so, we need to import all required internal modules after the script had the option to provision. The provisioning itself is then done by zulip.init_from_options(). --- zulip/integrations/irc/irc-mirror.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/zulip/integrations/irc/irc-mirror.py b/zulip/integrations/irc/irc-mirror.py index 313f9c5..7b35fa1 100755 --- a/zulip/integrations/irc/irc-mirror.py +++ b/zulip/integrations/irc/irc-mirror.py @@ -7,10 +7,10 @@ # (https://github.com/jaraco/irc) from __future__ import print_function -import zulip import argparse - -from irc_mirror_backend import IRCBot +import zulip +import sys +import traceback if False: from typing import Any, Dict @@ -29,23 +29,28 @@ Also note that at present you need to edit this code to do the Zulip => IRC side """ - if __name__ == "__main__": - parser = zulip.add_default_arguments(argparse.ArgumentParser(usage=usage)) + parser = zulip.add_default_arguments(argparse.ArgumentParser(usage=usage), allow_provisioning=True) parser.add_argument('--irc-server', default=None) parser.add_argument('--port', default=6667) parser.add_argument('--nick-prefix', default=None) parser.add_argument('--channel', default=None) options = parser.parse_args() + # Setting the client to irc_mirror is critical for this to work + options.client = "irc_mirror" + zulip_client = zulip.init_from_options(options) + try: + from irc_mirror_backend import IRCBot + except ImportError as e: + traceback.print_exc() + print("You have unsatisfied dependencies. Install all missing dependencies with " + "{} --provision".format(sys.argv[0])) + sys.exit(1) if options.irc_server is None or options.nick_prefix is None or options.channel is None: parser.error("Missing required argument") - # Setting the client to irc_mirror is critical for this to work - options.client = "irc_mirror" - zulip_client = zulip.init_from_options(options) - nickname = options.nick_prefix + "_zulip" bot = IRCBot(zulip_client, options.channel, nickname, options.irc_server, options.port) bot.start()