Пример #1
0
    def plugins(self, folder, args):
        t = Terminal()

        enabled_plugins = folder.load_plugins()
        available_plugins = utils.get_installed_plugins()

        if args.enable:
            if args.set_global:
                utils.set_global_config_value(
                    'plugins', args.enable, 'enabled',
                )
            else:
                folder.set_config_value(
                    'plugins', args.enable, 'enabled'
                )
        elif args.disable:
            if args.set_global:
                utils.set_global_config_value(
                    'plugins', args.disable, 'disabled',
                )
            else:
                folder.set_config_value(
                    'plugins', args.disable, 'disabled'
                )
        else:
            all_plugins = self.build_plugin_dict(
                enabled_plugins,
                available_plugins
            )

            for plugin_name, plugin_data in all_plugins.items():
                if plugin_data['enabled'] and args.disabled_only:
                    continue
                if not plugin_data['enabled'] and args.enabled_only:
                    continue
                if plugin_data['enabled']:
                    color = t.bold
                else:
                    color = t.normal

                print(
                    color + plugin_name + t.normal +
                    (
                        ' (Enabled)'
                        if plugin_data['enabled']
                        else (
                            ' (Disabled; enable by running `jirafs '
                            'plugins --enable=%s`)' % plugin_name
                        )
                    )
                )
                if args.verbose:
                    doc_string = (
                        plugin_data['class'].__doc__.strip().split('\n')
                    )
                    for line in doc_string:
                        print('     %s' % line)
Пример #2
0
    def handle(self, args, folder, parser, **kwargs):
        installed_plugins = utils.get_installed_plugins()
        if args.disabled_only and args.enabled_only:
            parser.error(
                "--disabled-only and --enabled-only are mutually exclusive.")
        if args.enable and args.enable not in installed_plugins:
            parser.error("Plugin '%s' is not installed." % args.enable)

        return self.cmd(folder, args)
Пример #3
0
    def main(self, folder, args):
        t = Terminal()

        enabled_plugins = folder.load_plugins()
        available_plugins = utils.get_installed_plugins()

        if args.enable:
            if args.set_global:
                utils.set_global_config_value(
                    'plugins',
                    args.enable,
                    'enabled',
                )
            else:
                folder.set_config_value('plugins', args.enable, 'enabled')
        elif args.disable:
            if args.set_global:
                utils.set_global_config_value(
                    'plugins',
                    args.disable,
                    'disabled',
                )
            else:
                folder.set_config_value('plugins', args.disable, 'disabled')

            print(
                "{t.red}{t.bold}Warning{t.normal}{t.red}: Disabling of macro "
                "plugins may result in you encountering problems working with "
                "folders using a macro.  If you encounter a problem, consider "
                "running `jirafs macropatch reset` to clear the "
                "currently-applied macros on a given ticket.{t.normal}".format(
                    t=t))
        else:
            all_plugins = self.build_plugin_dict(enabled_plugins,
                                                 available_plugins)

            for plugin_name, plugin_data in all_plugins.items():
                if plugin_data['enabled'] and args.disabled_only:
                    continue
                if not plugin_data['enabled'] and args.enabled_only:
                    continue
                if plugin_data['enabled']:
                    color = t.bold
                else:
                    color = t.normal

                print(color + plugin_name + t.normal +
                      (' (Enabled)' if plugin_data['enabled'] else
                       (' (Disabled; enable by running `jirafs '
                        'plugins --enable=%s`)' % plugin_name)))
                if args.verbose:
                    doc_string = (
                        plugin_data['class'].__doc__.strip().split('\n'))
                    for line in doc_string:
                        print('     %s' % line)
Пример #4
0
    def handle(self, args, folder, parser, **kwargs):
        installed_plugins = utils.get_installed_plugins()
        if args.disabled_only and args.enabled_only:
            parser.error(
                "--disabled-only and --enabled-only are mutually exclusive."
            )
        if args.enable and args.enable not in installed_plugins:
            parser.error(
                "Plugin '%s' is not installed." % args.enable
            )

        return self.cmd(folder, args)
Пример #5
0
    def main(self, folder, args):
        t = Terminal()

        enabled_plugins = folder.load_plugins()
        available_plugins = utils.get_installed_plugins()

        if args.enable:
            if args.set_global:
                utils.set_global_config_value(
                    "plugins",
                    args.enable,
                    "enabled",
                )
            else:
                folder.set_config_value("plugins", args.enable, "enabled")
        elif args.disable:
            if args.set_global:
                utils.set_global_config_value(
                    "plugins",
                    args.disable,
                    "disabled",
                )
            else:
                folder.set_config_value("plugins", args.disable, "disabled")
        else:
            all_plugins = self.build_plugin_dict(enabled_plugins,
                                                 available_plugins)

            for entrypoint_name, plugin_data in all_plugins.items():
                if plugin_data["enabled"] and args.disabled_only:
                    continue
                if not plugin_data["enabled"] and args.enabled_only:
                    continue
                if plugin_data["enabled"]:
                    color = t.bold
                else:
                    color = t.normal

                print(color + entrypoint_name + t.normal +
                      (" (Enabled)" if plugin_data["enabled"] else
                       (" (Disabled; enable by running `jirafs "
                        "plugins --enable=%s`)" % entrypoint_name)))
                if args.verbose:
                    doc_string = plugin_data["class"].__doc__.strip().split(
                        "\n")
                    for line in doc_string:
                        print("     %s" % line)
Пример #6
0
    def plugins(self, folder, args):
        t = Terminal()

        enabled_plugins = folder.load_plugins()
        available_plugins = utils.get_installed_plugins()

        if args.enable:
            if args.set_global:
                utils.set_global_config_value(
                    'plugins',
                    args.enable,
                    'enabled',
                )
            else:
                folder.set_config_value('plugins', args.enable, 'enabled')
        elif args.disable:
            if args.set_global:
                utils.set_global_config_value(
                    'plugins',
                    args.disable,
                    'disabled',
                )
            else:
                folder.set_config_value('plugins', args.disable, 'disabled')
        else:
            all_plugins = self.build_plugin_dict(enabled_plugins,
                                                 available_plugins)

            for plugin_name, plugin_data in all_plugins.items():
                if plugin_data['enabled'] and args.disabled_only:
                    continue
                if not plugin_data['enabled'] and args.enabled_only:
                    continue
                if plugin_data['enabled']:
                    color = t.bold
                else:
                    color = t.normal

                print(color + plugin_name + t.normal +
                      (' (Enabled)' if plugin_data['enabled'] else
                       (' (Disabled; enable by running `jirafs '
                        'plugins --enable=%s`)' % plugin_name)))
                if args.verbose:
                    doc_string = (
                        plugin_data['class'].__doc__.strip().split('\n'))
                    for line in doc_string:
                        print('     %s' % line)
Пример #7
0
    def get_macro_plugins(self):
        if not hasattr(self, '_macro_plugins'):
            config = self.folder.get_config()
            plugins = []

            if not config.has_section(constants.CONFIG_PLUGINS):
                return plugins

            installed_plugins = utils.get_installed_plugins(MacroPlugin)

            for name, status in config.items(constants.CONFIG_PLUGINS):
                if not utils.convert_to_boolean(status):
                    # This plugin is not turned on.
                    continue
                if name not in installed_plugins:
                    # This plugin is not installed.
                    self.folder.log(
                        "Macro plugin '%s' is not available; "
                        "this is probably because this plugin is not a "
                        "macro.",
                        (name, ),
                        level=logging.DEBUG
                    )
                    continue

                plugin = installed_plugins[name](self.folder, name)

                try:
                    plugin.validate()
                except PluginValidationError as e:
                    self.folder.log(
                        "Plugin '%s' did not pass validation; "
                        "not loading: %s.",
                        (name, e,),
                    )

                plugins.append(plugin)

            self._macro_plugins = plugins

        return self._macro_plugins
Пример #8
0
    def main(self, folder, args):
        t = Terminal()

        enabled_plugins = folder.load_plugins()
        available_plugins = utils.get_installed_plugins()

        if args.enable:
            if args.set_global:
                utils.set_global_config_value(
                    'plugins', args.enable, 'enabled',
                )
            else:
                folder.set_config_value(
                    'plugins', args.enable, 'enabled'
                )
        elif args.disable:
            if args.set_global:
                utils.set_global_config_value(
                    'plugins', args.disable, 'disabled',
                )
            else:
                folder.set_config_value(
                    'plugins', args.disable, 'disabled'
                )

            print(
                "{t.red}{t.bold}Warning{t.normal}{t.red}: Disabling of macro "
                "plugins may result in you encountering problems working with "
                "folders using a macro.  If you encounter a problem, consider "
                "running `jirafs macropatch reset` to clear the "
                "currently-applied macros on a given ticket.{t.normal}".format(
                    t=t
                )
            )
        else:
            all_plugins = self.build_plugin_dict(
                enabled_plugins,
                available_plugins
            )

            for plugin_name, plugin_data in all_plugins.items():
                if plugin_data['enabled'] and args.disabled_only:
                    continue
                if not plugin_data['enabled'] and args.enabled_only:
                    continue
                if plugin_data['enabled']:
                    color = t.bold
                else:
                    color = t.normal

                print(
                    color + plugin_name + t.normal +
                    (
                        ' (Enabled)'
                        if plugin_data['enabled']
                        else (
                            ' (Disabled; enable by running `jirafs '
                            'plugins --enable=%s`)' % plugin_name
                        )
                    )
                )
                if args.verbose:
                    doc_string = (
                        plugin_data['class'].__doc__.strip().split('\n')
                    )
                    for line in doc_string:
                        print('     %s' % line)