From ce03fe0d3134bb470727c1e98c44886eec799807 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Sat, 8 Jan 2022 15:27:52 -0600 Subject: [PATCH] Addon Manager: Add version-based Addon deprecation --- src/Mod/AddonManager/addonmanager_workers.py | 29 ++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/Mod/AddonManager/addonmanager_workers.py b/src/Mod/AddonManager/addonmanager_workers.py index 53e8977a9f..511fedef41 100644 --- a/src/Mod/AddonManager/addonmanager_workers.py +++ b/src/Mod/AddonManager/addonmanager_workers.py @@ -177,6 +177,35 @@ class UpdateWorker(QtCore.QThread): if "py2only" in j and "Mod" in j["py2only"]: py2only = j["py2only"]["Mod"] + + if "deprecated" in j: + fc_major = int(FreeCAD.Version()[0]) + fc_minor = int(FreeCAD.Version()[1]) + for item in j["deprecated"]: + if "as_of" in item and "name" in item: + try: + version_components = item["as_of"].split(".") + major = int(version_components[0]) + if len(version_components) > 1: + minor = int(version_components[1]) + else: + minor = 0 + if major < fc_major or ( + major == fc_major and minor <= fc_minor + ): + if "kind" not in item or item["kind"] == "mod": + obsolete.append(item["name"]) + elif item["kind"] == "macro": + macros_reject_list.append(item["name"]) + else: + FreeCAD.Console.PrintMessage( + f'Unrecognized Addon kind {item["kind"]} in deprecation list.' + ) + except Exception: + FreeCAD.Console.PrintMessage( + f"Exception caught when parsing deprecated Addon {item['name']}, version {item['as_of']}" + ) + else: message = translate( "AddonsInstaller",