diff --git a/cbpi/__init__.py b/cbpi/__init__.py index 6cf8058..3f59d96 100644 --- a/cbpi/__init__.py +++ b/cbpi/__init__.py @@ -1 +1 @@ -__version__ = "4.0.0.39" +__version__ = "4.0.0.40" diff --git a/cbpi/cli.py b/cbpi/cli.py index 53d5435..d2158cc 100644 --- a/cbpi/cli.py +++ b/cbpi/cli.py @@ -16,6 +16,7 @@ import yaml import click from subprocess import call import zipfile +from importlib_metadata import version, metadata from jinja2 import Template @@ -248,13 +249,17 @@ def plugin_remove(package_name): def plugins_list(): print("--------------------------------------") - print("List of active pluigins") + print("List of active plugins") try: with open(os.path.join(".", 'config', "config.yaml"), 'rt') as f: data = yaml.load(f, Loader=yaml.FullLoader) for p in data["plugins"]: - print("- {}".format(p)) + p_metadata= metadata(p) + p_Homepage= p_metadata['Home-page'] + p_version = p_metadata['Version'] + p_Author = p_metadata['Author'] + print("- ({})\t{}".format(p_version,p)) except Exception as e: print(e) pass diff --git a/cbpi/controller/plugin_controller.py b/cbpi/controller/plugin_controller.py index 60742ad..b61b05c 100644 --- a/cbpi/controller/plugin_controller.py +++ b/cbpi/controller/plugin_controller.py @@ -1,8 +1,10 @@ import logging import os from importlib import import_module +from importlib_metadata import version, metadata import datetime import aiohttp +import asyncio import yaml import subprocess import sys @@ -167,3 +169,31 @@ class PluginController(): {"method": method_name, "label": key, "parameters": parameters}) return result + + async def load_plugin_list(self): + result = [] + try: + with open(os.path.join(".", 'config', "config.yaml"), 'rt') as f: + data = yaml.load(f, Loader=yaml.FullLoader) + + for p in data["plugins"]: + try: + p_metadata= metadata(p) + p_name = p_metadata['name'] + p_version = p_metadata['Version'] + p_summary = p_metadata['Summary'] + p_homepage= p_metadata['Home-page'] + p_author = p_metadata['Author'] + p_author_email = p_metadata['Author-email'] + p_license = p_metadata['License'] + p_description = p_metadata['Description'] + plugin_data = {'Name': p_name,'Version': p_version,'Summary': p_summary,'Homepage':p_homepage,'Author':p_author,'Email': p_author_email,'License': p_license,'Description': p_description} + result.append(plugin_data) + except: + pass +# print("- ({})\t{}".format(p_version,p)) + except Exception as e: + print(e) + return [] + pass + return result diff --git a/cbpi/http_endpoints/http_plugin.py b/cbpi/http_endpoints/http_plugin.py index 5a63789..fc3ae2c 100644 --- a/cbpi/http_endpoints/http_plugin.py +++ b/cbpi/http_endpoints/http_plugin.py @@ -1,6 +1,7 @@ from aiohttp import web from cbpi.api import request_mapping from cbpi.utils import json_dumps +import logging class PluginHttpEndpoints: @@ -83,4 +84,5 @@ class PluginHttpEndpoints: "405": description: invalid HTTP Method """ - return web.json_response(await self.cbpi.plugin.load_plugin_list(), dumps=json_dumps) + plugin_list = await self.cbpi.plugin.load_plugin_list() + return web.json_response(plugin_list, dumps=json_dumps) diff --git a/setup.py b/setup.py index d9ebed4..6dc39e9 100644 --- a/setup.py +++ b/setup.py @@ -38,7 +38,8 @@ setup(name='cbpi', 'psutil==5.8.0', 'numpy==1.20.3', 'scipy', - 'cbpi4ui'] + ( + 'cbpi4ui', + 'importlib_metadata'] + ( ['RPi.GPIO'] if platform.uname()[1] == "raspberrypi" else [] ), dependency_links=[