Addon Manager: Add support for salsa.debian.org

The pyrate has moved to salsa.debian.org, so this commit adds the
beginnings of support for those repos.The Markdown library is required
for nice rendering of repos that don't have a package.xml metadata file.
This commit is contained in:
Chris Hennes
2021-10-27 22:09:03 -05:00
parent 5c1655d125
commit 67f051007e
2 changed files with 25 additions and 22 deletions

View File

@@ -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'<meta property="og:description" content="(.*?)"'
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":
return r'<meta.*?content="(.*?)".*?og:description.*?>'
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 "<article.*?>(.*?)</article>"
else:
FreeCAD.Console.PrintWarning("Debug: addonmanager_utilities.get_readme_regex: Unknown git host:", repo.url)
return None

View File

@@ -177,23 +177,6 @@ class UpdateWorker(QtCore.QThread):
r"url\s*=\s*(?P<url>https?://.*)\s*"
r"(branch\s*=\s*(?P<branch>.*)\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():