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():