Ejemplo n.º 1
0
    def load_plugins(self):

        this_directory = os.sep.join(
            os.path.abspath(__file__).split(os.sep)[:-1])
        for filename in os.listdir(os.path.join(this_directory,
                                                "../extension")):
            if os.path.isdir(
                    os.path.join(this_directory, "../extension/") +
                    filename) is False or filename == "__pycache__":
                continue
            try:
                logger.info("Trying to load plugin %s" % filename)
                data = load_config(
                    os.path.join(this_directory,
                                 "../extension/%s/config.yaml" % filename))

                if (data.get("active") is True and data.get("version") == 4):
                    self.modules[filename] = import_module(
                        "cbpi.extension.%s" % (filename))
                    self.modules[filename].setup(self.cbpi)
                    # logger.info("Plugin %s loaded successful" % filename)
                else:
                    logger.warning("Plugin %s is not supporting version 4" %
                                   filename)

            except Exception as e:

                logger.error(e)
Ejemplo n.º 2
0
def remove(package_name):
    if package_name is None:
        print("Missing Plugin Name: cbpi add --name=")
        return
    data = subprocess.check_output(
        [sys.executable, "-m", "pip", "uninstall", "-y", package_name])
    data = data.decode('UTF-8')

    pattern = "Successfully uninstalled %s-([-0-9a-zA-Z._]*)" % package_name
    match_uninstalled = re.search(pattern, data)

    if match_uninstalled is None:
        print(data)
        print("Faild to uninstall plugin")
        return False

    plugins = load_config("./config/plugin_list.txt")
    if plugins is None:
        plugins = {}

    if package_name not in plugins:
        return False

    del plugins[package_name]
    with open('./config/plugin_list.txt', 'w') as outfile:
        yaml.dump(plugins, outfile, default_flow_style=False)

    print("Plugin %s removed" % package_name)
    return True
Ejemplo n.º 3
0
def add(package_name):

    if package_name is None:
        print("Missing Plugin Name: cbpi add --name=")
        return

    data = subprocess.check_output(
        [sys.executable, "-m", "pip", "install", package_name])
    data = data.decode('UTF-8')

    patter_already_installed = "Requirement already satisfied: %s" % package_name
    pattern = "Successfully installed %s-([-0-9a-zA-Z._]*)" % package_name

    match_already_installed = re.search(patter_already_installed, data)
    match_installed = re.search(pattern, data)

    if match_already_installed is not None:
        print("Plugin already installed")
        return False

    if match_installed is None:
        print(data)
        print("Faild to install plugin")
        return False

    version = match_installed.groups()[0]
    plugins = load_config("./config/plugin_list.txt")
    if plugins is None:
        plugins = {}
    now = datetime.datetime.now()
    plugins[package_name] = dict(
        version=version, installation_date=now.strftime("%Y-%m-%d %H:%M:%S"))

    with open('./config/plugin_list.txt', 'w') as outfile:
        yaml.dump(plugins, outfile, default_flow_style=False)

    print("Plugin %s added" % package_name)
    return True
Ejemplo n.º 4
0
    def __init__(self, cbpi):
        self.cbpi = cbpi

        self.plugins = {}
        self.plugins = load_config("./config/plugin_list.txt")