diff --git a/src/Mod/AddonManager/addonmanager_utilities.py b/src/Mod/AddonManager/addonmanager_utilities.py index 1a7addec9f..c74b3cfe06 100644 --- a/src/Mod/AddonManager/addonmanager_utilities.py +++ b/src/Mod/AddonManager/addonmanager_utilities.py @@ -188,8 +188,9 @@ def get_zip_url(repo): parsedUrl = urlparse(repo.url) if parsedUrl.netloc == "github.com": return f"{repo.url}/archive/{repo.branch}.zip" - elif parsedUrl.netloc == "framagit.org" or parsedUrl.netloc == "gitlab.com": + elif parsedUrl.netloc == "framagit.org" or parsedUrl.netloc == "gitlab.com" or parsedUrl.netloc == "salsa.debian.org": # https://framagit.org/freecad-france/mooc-workbench/-/archive/master/mooc-workbench-master.zip + # https://salsa.debian.org/mess42/pyrate/-/archive/master/pyrate-master.zip reponame = baseurl.strip("/").split("/")[-1] return f"{repo.url}/-/archive/{repo.branch}/{repo.name}-{repo.branch}.zip" else: @@ -202,7 +203,7 @@ def construct_git_url(repo, filename): parsed_url = urlparse(repo.url) if parsed_url.netloc == "github.com" or parsed_url.netloc == "framagit.com": return f"{repo.url}/raw/{repo.branch}/{filename}" - elif parsed_url.netloc == "gitlab.com": + elif parsed_url.netloc == "gitlab.com" or parsed_url.netloc == "salsa.debian.org": return f"{repo.url}/-/raw/{repo.branch}/{filename}" else: FreeCAD.Console.PrintLog("Debug: addonmanager_utilities.construct_git_url: Unknown git host:", parsed_url.netloc) @@ -226,7 +227,7 @@ def get_desc_regex(repo): parsedUrl = urlparse(repo.url) if parsedUrl.netloc == "github.com": return r'' FreeCAD.Console.PrintWarning("Debug: addonmanager_utilities.get_desc_regex: Unknown git host:", repo.url) return None @@ -239,7 +240,6 @@ def get_readme_html_url(repo): if parsedUrl.netloc == "github.com": return f"{repo.url}/blob/{repo.branch}/README.md" else: - FreeCAD.Console.PrintWarning("Debug: addonmanager_utilities.get_readme_html_url: Unknown git host:", repo.url) return None @@ -251,7 +251,6 @@ def get_readme_regex(repo): if parsedUrl.netloc == "github.com": return "(.*?)" else: - FreeCAD.Console.PrintWarning("Debug: addonmanager_utilities.get_readme_regex: Unknown git host:", repo.url) return None diff --git a/src/Mod/AddonManager/addonmanager_workers.py b/src/Mod/AddonManager/addonmanager_workers.py index 8716375f91..eb72968390 100644 --- a/src/Mod/AddonManager/addonmanager_workers.py +++ b/src/Mod/AddonManager/addonmanager_workers.py @@ -177,23 +177,6 @@ class UpdateWorker(QtCore.QThread): r"url\s*=\s*(?Phttps?://.*)\s*" r"(branch\s*=\s*(?P.*)\s*)?"), p) - # querying official addons - for name, path, url, _, branch in p: - if self.current_thread.isInterruptionRequested(): - return - if name in package_names: - # We've already got this info since it's a package - continue - if branch is None or len(branch) == 0: - branch = "master" - url = url.split(".git")[0] - addondir = moddir + os.sep + name - if os.path.exists(addondir) and os.listdir(addondir): - # make sure the folder exists and it contains files! - state = AddonManagerRepo.UpdateStatus.UNCHECKED - else: - state = AddonManagerRepo.UpdateStatus.NOT_INSTALLED - self.addon_repo.emit(AddonManagerRepo(name, url, state, branch)) # querying custom addons addon_list = (FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons") .GetString("CustomRepositories", "").split("\n")) @@ -208,6 +191,8 @@ class UpdateWorker(QtCore.QThread): if self.current_thread.isInterruptionRequested(): return if addon and addon["url"]: + if addon["url"][-1] == "/": + addon["url"] = addon["url"][0:-1] # Strip trailing slash name = addon["url"].split("/")[-1] if name.lower().endswith(".git"): name = name[:-4] @@ -220,6 +205,25 @@ class UpdateWorker(QtCore.QThread): else: state = AddonManagerRepo.UpdateStatus.NOT_INSTALLED self.addon_repo.emit(AddonManagerRepo(name, addon["url"], state, addon["branch"])) + + # querying official addons + for name, path, url, _, branch in p: + if self.current_thread.isInterruptionRequested(): + return + if name in package_names: + # We've already got this info since it's a package or a custom repo + continue + if branch is None or len(branch) == 0: + branch = "master" + url = url.split(".git")[0] + addondir = moddir + os.sep + name + if os.path.exists(addondir) and os.listdir(addondir): + # make sure the folder exists and it contains files! + state = AddonManagerRepo.UpdateStatus.UNCHECKED + else: + state = AddonManagerRepo.UpdateStatus.NOT_INSTALLED + self.addon_repo.emit(AddonManagerRepo(name, url, state, branch)) + self.status_message.emit(translate("AddonsInstaller", "Workbenches list was updated.")) if not self.current_thread.isInterruptionRequested():