class Main(object): DEFAULT_CONFIG_PATH = dirname(__file__) + "/mousetrap.yaml" USER_CONFIG_PATH = expanduser("~/.mousetrap.yaml") def __init__(self): try: self._app = None self._args = CommandLineArguments() self._handle_dump_annotated() self._config = Config().load(self._get_config_paths()) self._handle_dump_config() self._configure_logging() except ExitException: sys.exit(0) def _get_config_paths(self): paths = [self.DEFAULT_CONFIG_PATH] if exists(self.USER_CONFIG_PATH): paths.append(self.USER_CONFIG_PATH) if self._args.config is not None: paths.append(self._args.config) return paths def _handle_dump_annotated(self): if self._args.dump_annotated: self._dump_annotated() raise ExitException() def _handle_dump_config(self): if self._args.dump_config: self._dump_config() raise ExitException() @classmethod def _dump_annotated(cls): with open(cls.DEFAULT_CONFIG_PATH, "r") as annotated_file: print(annotated_file.read()) def _dump_config(self): print(yaml.dump(dict(self._config), default_flow_style=False)) def _configure_logging(self): logging.config.dictConfig(self._config["logging"]) logger = logging.getLogger("mousetrap.main") logger.debug(yaml.dump(dict(self._config), default_flow_style=False)) def run(self): self._app = App(self._config) signal.signal(signal.SIGTERM, self._stop_signal_handler) signal.signal(signal.SIGINT, self._stop_signal_handler) self._app.run() def _stop_signal_handler(self, signal_number, stack_frame): self._app.stop()
class Main(object): DEFAULT_CONFIG_PATH = dirname(__file__) + '/mousetrap.yaml' USER_CONFIG_PATH = expanduser('~/.mousetrap.yaml') def __init__(self): try: self._app = None self._args = CommandLineArguments() self._handle_dump_annotated() self._config = Config().load(self._get_config_paths()) self._handle_dump_config() self._configure_logging() except ExitException: sys.exit(0) def _get_config_paths(self): paths = [self.DEFAULT_CONFIG_PATH] if exists(self.USER_CONFIG_PATH): paths.append(self.USER_CONFIG_PATH) if self._args.config is not None: paths.append(self._args.config) return paths def _handle_dump_annotated(self): if self._args.dump_annotated: self._dump_annotated() raise ExitException() def _handle_dump_config(self): if self._args.dump_config: self._dump_config() raise ExitException() @classmethod def _dump_annotated(cls): with open(cls.DEFAULT_CONFIG_PATH, 'r') as annotated_file: print(annotated_file.read()) def _dump_config(self): print(yaml.dump(dict(self._config), default_flow_style=False)) def _configure_logging(self): logging.config.dictConfig(self._config['logging']) logger = logging.getLogger('mousetrap.main') logger.debug(yaml.dump(dict(self._config), default_flow_style=False)) def run(self): self._app = App(self._config) signal.signal(signal.SIGTERM, self._stop_signal_handler) signal.signal(signal.SIGINT, self._stop_signal_handler) self._app.run() def _stop_signal_handler(self, signal_number, stack_frame): self._app.stop()
def run(self): self._app = App(self._config) signal.signal(signal.SIGTERM, self._stop_signal_handler) signal.signal(signal.SIGINT, self._stop_signal_handler) self._app.run()