Allow specifying a custom forge scheme

Users may wish to use the forge macros with self-hosted forges. Instead
of having to hardcode every single forge mapping, this allows users to
choose a forge scheme themselves.
This commit is contained in:
Maxwell G 2023-09-07 16:11:43 +00:00
commit 6bd567d2ea
Signed by: gotmax23
GPG key ID: F79E4E25E8C661F8
2 changed files with 47 additions and 6 deletions

View file

@ -63,11 +63,11 @@ local function checkforgeurl(url, id, silent)
end
-- Check if an url matches a known forge
local function idforge(url, silent)
local function idforge(url, silent, forge_override)
local forgeurl = nil
local forge = nil
if (url ~= "") then
forge = string.match(url, "^[^:]+://([^/]+)/")
forge = forge_override or string.match(url, "^[^:]+://([^/]+)/")
if (forge == nil) then
if not silent then
rpm.expand("%{error:URLs must include a protocol such as https:// and a path starting with / !}")
@ -109,7 +109,7 @@ local function meta(suffix, verbose, informative, silent)
"archivename", "archiveext", "archiveurl",
"topdir", "extractdir", "repo", "owner", "namespace",
"scm", "tag", "commit", "shortcommit", "branch", "version",
"date", "distprefix"}, verbose)
"date", "distprefix", "forge"}, verbose)
end
local variables = {
default = {
@ -198,9 +198,10 @@ local function meta(suffix, verbose, informative, silent)
forgeurl = expliciturl
end
local forge
forgeurl, forge = idforge(forgeurl, silent)
forgeurl, forge = idforge(forgeurl, silent, macros["forge" .. suffix])
if (forge ~= nil) then
fedora.explicitset("forgeurl" .. suffix, forgeurl, verbose)
fedora.explicitset("forge" .. suffix, forge, verbose)
-- Custom processing of quirky forges that can not be handled with simple variables
if (forge == "github") then
-- Workaround the way GitHub injects "v"s before some version strings (but not all!)
@ -319,7 +320,8 @@ local function meta(suffix, verbose, informative, silent)
fedora.zalias({"forgeurl", "forgesource", "forgesetupargs",
"archivename", "archiveext", "archiveurl",
"topdir", "extractdir", "repo", "owner", "namespace",
"scm", "shortcommit", "distprefix", "_forgeversionsuffix"}, verbose)
"scm", "shortcommit", "distprefix", "_forgeversionsuffix",
"forge"}, verbose)
end
-- Final spec variable summary if the macro was called with -i
if informative then
@ -328,7 +330,8 @@ local function meta(suffix, verbose, informative, silent)
"archivename", "archiveext", "archiveurl",
"topdir", "extractdir", "repo", "owner", "namespace",
"scm", "tag", "commit", "shortcommit", "branch", "version",
"date", "distprefix", "_forgeversionsuffix"}, suffix)
"date", "distprefix", "_forgeversionsuffix",
"forge"}, suffix)
fedora.echovars({"dist"},"")
rpm.expand("%{echo: (snapshot date is either manually supplied or computed once %%{_sourcedir}/%%{archivename" .. suffix .. "}.%%{archiveext" .. suffix .. "} is available)}")
end

View file

@ -17,6 +17,7 @@ _anchors:
- extractdir
- repo
- scm
- forge
zeroidx_commit: &zeroidx_commit
- commit
- distprefix
@ -30,6 +31,7 @@ _anchors:
- extractdir
- repo
- scm
- forge
cases:
- id: smoke
@ -69,6 +71,7 @@ cases:
forgesetup: "SETUP -q -n ansible-%{version}\n"
"forgesetup -z0": "%forgesetup"
"forgesetup -a": "%forgesetup"
forge: github
zero_indexed: *zeroidx
expected_undefined:
- distprefix
@ -92,6 +95,7 @@ cases:
extractdir: "community.general-%{version}"
repo: community.general
scm: git
forge: github
zero_indexed: *zeroidx
expected_undefined:
- distprefix
@ -112,6 +116,7 @@ cases:
repo: ansible
scm: git
distprefix: ".git520bb66"
forge: github
zero_indexed: *zeroidx_commit
# Different semantics are used when a date is specified
@ -133,6 +138,7 @@ cases:
scm: git
distprefix: ".20230813git520bb66"
_forgeversionsuffix0: ".20230813git520bb66"
forge: github
zero_indexed: *zeroidx_commit
- id: gitlab_forgesource_simple
@ -150,6 +156,7 @@ cases:
extractdir: "fdroidclient-%{version}"
repo: fdroidclient
scm: git
forge: gitlab
zero_indexed: *zeroidx
expected_undefined:
- distprefix
@ -170,6 +177,7 @@ cases:
scm: git
distprefix: ".git9530f51"
_forgeversionsuffix: ".git9530f51"
forge: gitlab
zero_indexed: *zeroidx_commit
- id: test_gitea_simple
@ -190,6 +198,7 @@ cases:
extractdir: "%{name}"
repo: "%{name}"
scm: git
forge: gitea.com
zero_indexed: *zeroidx
expected_undefined:
- distprefix
@ -211,6 +220,7 @@ cases:
scm: git
distprefix: ".gitf5dbac2"
_forgeversionsuffix: ".gitf5dbac2"
forge: gitea.com
zero_indexed: *zeroidx_commit
- id: test_sourcehut_simple
@ -229,6 +239,7 @@ cases:
extractdir: "%{name}-%{version}"
repo: "%{name}"
scm: git
forge: sourcehut
zero_indexed: *zeroidx
expected_undefined:
- distprefix
@ -251,6 +262,7 @@ cases:
scm: git
distprefix: ".gite124442"
_forgeversionsuffix: ".gite124442"
forge: sourcehut
zero_indexed: *zeroidx_commit
- id: sourcehut_v_prefix
@ -275,6 +287,7 @@ cases:
extractdir: "fedrq-v%{version}"
repo: fedrq
scm: git
forge: sourcehut
zero_indexed: *zeroidx
expected_undefined:
- distprefix
@ -382,6 +395,7 @@ cases:
scm: git
distprefix: ".git9479d77"
_forgeversionsuffix: ".git9479d77"
forge: bitbucket.org
zero_indexed: *zeroidx_commit
- id: multisource_all
@ -413,6 +427,7 @@ cases:
"forgesetup -a": |
SETUP -q %{forgesetupargs}
SETUP -q %{forgesetupargs1}
forge: github
zero_indexed: *zeroidx
expected_undefined:
- distprefix
@ -477,3 +492,26 @@ cases:
"forgeversion -p -z12": "1.0.0"
# override %version with -b
"forgeversion -b 1.1.0": "1.1.0^abcd"
- id: custom_forge_gitea
defines:
- version: "5.11.1"
forgeurl: "https://opendev.org/openstack/pbr"
forge: "gitea.com"
- version0: "5.11.1"
forgeurl0: "https://opendev.org/openstack/pbr"
forge0: "gitea.com"
expected:
forgesource: "https://opendev.org/openstack/pbr/archive/%{version}.tar.gz"
forgesetupargs: "-n pbr"
archivename: "%{version}"
archiveext: "tar.gz"
archiveurl: "%{forgesource}"
topdir: "pbr"
extractdir: "pbr"
repo: "pbr"
scm: git
forge: gitea.com
zero_indexed: *zeroidx
expected_undefined:
- distprefix