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)
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
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
def __init__(self, cbpi): self.cbpi = cbpi self.plugins = {} self.plugins = load_config("./config/plugin_list.txt")