コード例 #1
0
    def runserver(self):

        def _shutdown(signum, frame):
            eventlet.spawn_n(runner.stop)

        runner = ServiceRunner(config=config.to_dict())
        # for service_cls in BaseService.__subclasses__():
        #     runner.add_service(service_cls)
        runner.add_service(InvboxService)

        signal.signal(signal.SIGTERM, _shutdown)
        runner.start()
        runnlet = eventlet.spawn(runner.wait)

        while True:
            try:
                runnlet.wait()
            except OSError as exc:
                if exc.errno == errno.EINTR:
                    continue
                raise
            except KeyboardInterrupt:
                print()
                try:
                    runner.stop()
                except KeyboardInterrupt:
                    print()  # as above
                    runner.kill()
            else:
                break
コード例 #2
0
def get_config(call: APICall):
    path = call.data.get("path")
    if path:
        c = dict(config.get(path))
    else:
        c = config.to_dict()

    def remove_none_value(x):
        """
        Pyhocon bug in Python 3: leaves dummy "NoneValue"s in tree,
        see: https://github.com/chimpler/pyhocon/issues/111
        """
        if isinstance(x, dict):
            return {key: remove_none_value(value) for key, value in x.items()}
        if isinstance(x, list):
            return list(map(remove_none_value, x))
        if isinstance(x, NoneValue):
            return None
        return x

    c.pop("secure", None)

    call.result.data = remove_none_value(c)
コード例 #3
0
def command_set(self, args):
    """
    /set [module|][section] <option> [value]
    """
    if args is None or len(args) == 0:
        config_dict = config.to_dict()
        lines = []
        theme = get_theme()
        for section_name, section in config_dict.items():
            lines.append(
                '\x19%(section_col)s}[%(section)s]\x19o' % {
                    'section': section_name,
                    'section_col': dump_tuple(theme.COLOR_INFORMATION_TEXT),
                })
            for option_name, option_value in section.items():
                lines.append(
                    '%s\x19%s}=\x19o%s' %
                    (option_name, dump_tuple(
                        theme.COLOR_REVISIONS_MESSAGE), option_value))
        info = ('Current  options:\n%s' % '\n'.join(lines), 'Info')
    elif len(args) == 1:
        option = args[0]
        value = config.get(option)
        if value is None and '=' in option:
            args = option.split('=', 1)
        info = ('%s=%s' % (option, value), 'Info')
    if len(args) == 2:
        if '|' in args[0]:
            plugin_name, section = args[0].split('|')[:2]
            if not section:
                section = plugin_name
            option = args[1]
            if not plugin_name in self.plugin_manager.plugins:
                file_name = self.plugin_manager.plugins_conf_dir
                file_name = os.path.join(file_name, plugin_name + '.cfg')
                plugin_config = PluginConfig(file_name, plugin_name)
            else:
                plugin_config = self.plugin_manager.plugins[plugin_name].config
            value = plugin_config.get(option, default='', section=section)
            info = ('%s=%s' % (option, value), 'Info')
        else:
            possible_section = args[0]
            if config.has_section(possible_section):
                section = possible_section
                option = args[1]
                value = config.get(option, section=section)
                info = ('%s=%s' % (option, value), 'Info')
            else:
                option = args[0]
                value = args[1]
                info = config.set_and_save(option, value)
                self.trigger_configuration_change(option, value)
    elif len(args) == 3:
        if '|' in args[0]:
            plugin_name, section = args[0].split('|')[:2]
            if not section:
                section = plugin_name
            option = args[1]
            value = args[2]
            if not plugin_name in self.plugin_manager.plugins:
                file_name = self.plugin_manager.plugins_conf_dir
                file_name = os.path.join(file_name, plugin_name + '.cfg')
                plugin_config = PluginConfig(file_name, plugin_name)
            else:
                plugin_config = self.plugin_manager.plugins[plugin_name].config
            info = plugin_config.set_and_save(option, value, section)
        else:
            if args[0] == '.':
                name = safeJID(self.current_tab().name).bare
                if not name:
                    self.information('Invalid tab to use the "." argument.',
                                     'Error')
                    return
                section = name
            else:
                section = args[0]
            option = args[1]
            value = args[2]
            info = config.set_and_save(option, value, section)
            self.trigger_configuration_change(option, value)
    elif len(args) > 3:
        return self.command_help('set')
    self.information(*info)
コード例 #4
0
def backup_cfg():
    orig_config = cfg.to_dict()
    yield
    cfg.from_dict(orig_config)
コード例 #5
0
ファイル: commands.py プロジェクト: krackou/poezio
def command_set(self, args):
    """
    /set [module|][section] <option> [value]
    """
    if args is None or len(args) == 0:
        config_dict = config.to_dict()
        lines = []
        theme = get_theme()
        for section_name, section in config_dict.items():
            lines.append('\x19%(section_col)s}[%(section)s]\x19o' %
                    {
                        'section': section_name,
                        'section_col': dump_tuple(theme.COLOR_INFORMATION_TEXT),
                    })
            for option_name, option_value in section.items():
                lines.append('%s\x19%s}=\x19o%s' % (option_name,
                                                    dump_tuple(theme.COLOR_REVISIONS_MESSAGE),
                                                    option_value))
        info = ('Current  options:\n%s' % '\n'.join(lines), 'Info')
    elif len(args) == 1:
        option = args[0]
        value = config.get(option)
        if value is None and '=' in option:
            args = option.split('=', 1)
        info = ('%s=%s' % (option, value), 'Info')
    if len(args) == 2:
        if '|' in args[0]:
            plugin_name, section = args[0].split('|')[:2]
            if not section:
                section = plugin_name
            option = args[1]
            if not plugin_name in self.plugin_manager.plugins:
                file_name = self.plugin_manager.plugins_conf_dir
                file_name = os.path.join(file_name, plugin_name + '.cfg')
                plugin_config = PluginConfig(file_name, plugin_name)
            else:
                plugin_config = self.plugin_manager.plugins[plugin_name].config
            value = plugin_config.get(option, default='', section=section)
            info = ('%s=%s' % (option, value), 'Info')
        else:
            possible_section = args[0]
            if config.has_section(possible_section):
                section = possible_section
                option = args[1]
                value = config.get(option, section=section)
                info = ('%s=%s' % (option, value), 'Info')
            else:
                option = args[0]
                value = args[1]
                info = config.set_and_save(option, value)
                self.trigger_configuration_change(option, value)
    elif len(args) == 3:
        if '|' in args[0]:
            plugin_name, section = args[0].split('|')[:2]
            if not section:
                section = plugin_name
            option = args[1]
            value = args[2]
            if not plugin_name in self.plugin_manager.plugins:
                file_name = self.plugin_manager.plugins_conf_dir
                file_name = os.path.join(file_name, plugin_name + '.cfg')
                plugin_config = PluginConfig(file_name, plugin_name)
            else:
                plugin_config = self.plugin_manager.plugins[plugin_name].config
            info = plugin_config.set_and_save(option, value, section)
        else:
            if args[0] == '.':
                name = safeJID(self.current_tab().name).bare
                if not name:
                    self.information(_('Invalid tab to use the "." argument.'),
                                     _('Error'))
                    return
                section = name
            else:
                section = args[0]
            option = args[1]
            value = args[2]
            info = config.set_and_save(option, value, section)
            self.trigger_configuration_change(option, value)
    elif len(args) > 3:
        return self.command_help('set')
    self.call_for_resize()
    self.information(*info)