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:
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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():
|
||||
|
||||
Reference in New Issue
Block a user