From 0a1b8245a6c0f19deea6fd63044c8c9d84497094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Pablo=20Gim=C3=A9nez?= Date: Thu, 6 Aug 2020 00:22:41 -0300 Subject: [PATCH] change update_addon to delete/download if the repo_url was changed --- modules/addon/endpoints.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/modules/addon/endpoints.py b/modules/addon/endpoints.py index 10049fe..49ef4b0 100644 --- a/modules/addon/endpoints.py +++ b/modules/addon/endpoints.py @@ -145,9 +145,9 @@ def plugins(): def download_addon(name): plugin = cbpi.cache["plugins"].get(name) - plugin["loading"] = True if plugin is None: return ('', 404) + plugin["loading"] = True try: Repo.clone_from(plugin.get("repo_url"), "./modules/plugins/%s/" % (name)) cbpi.notify("Download successful", "Plugin %s downloaded successfully" % name) @@ -158,9 +158,28 @@ def download_addon(name): @blueprint.route('//update', methods=['POST']) def update_addon(name): + """ + Updates a addon + + :param name: plugin name + :return: HTTP 204 if ok - HTTP 500 if plugin not exists + """ + plugin = cbpi.cache["plugins"].get(name) + if plugin is None: + return ('', 404) + plugin["loading"] = True + repo = Repo("./modules/plugins/%s/" % (name)) - o = repo.remotes.origin - info = o.pull() + if repo.remotes.origin.url == plugin.get('repo_url'): + o = repo.remotes.origin + _info = o.pull() + else: + # url has changed the plugin needs to be re-downloaded + deletePlugin(name) + return download_addon(name) + + reload(name) + plugin["loading"] = False cbpi.notify("Plugin Updated", "Plugin %s updated successfully. Please restart the system" % name) return ('', 204)