Skip to content

Commit d145fdb

Browse files
committed
Add workaround to accept GL canonical names without a commit ID
Fixes: #302 Signed-off-by: Tobias Wolf <wolf@b1-systems.de> On-behalf-of: SAP <tobias.wolf@sap.com>
1 parent 7535722 commit d145fdb

File tree

5 files changed

+38
-18
lines changed

5 files changed

+38
-18
lines changed

.github/actions/features_parse/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ outputs:
1111
runs:
1212
using: composite
1313
steps:
14-
- uses: gardenlinux/python-gardenlinux-lib/.github/actions/setup@0.10.10
14+
- uses: gardenlinux/python-gardenlinux-lib/.github/actions/setup@0.10.11
1515
- id: result
1616
shell: bash
1717
run: |

.github/actions/flavors_parse/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ outputs:
1313
runs:
1414
using: composite
1515
steps:
16-
- uses: gardenlinux/python-gardenlinux-lib/.github/actions/setup@0.10.10
16+
- uses: gardenlinux/python-gardenlinux-lib/.github/actions/setup@0.10.11
1717
- id: matrix
1818
shell: bash
1919
run: |

.github/actions/setup/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Installs the given GardenLinux Python library
44
inputs:
55
version:
66
description: GardenLinux Python library version
7-
default: "0.10.10"
7+
default: "0.10.11"
88
python_version:
99
description: Python version to setup
1010
default: "3.13"

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "gardenlinux"
3-
version = "0.10.10"
3+
version = "0.10.11"
44
description = "Contains tools to work with the features directory of gardenlinux, for example deducting dependencies from feature sets or validating cnames"
55
authors = ["Garden Linux Maintainers <contact@gardenlinux.io>"]
66
license = "Apache-2.0"

src/gardenlinux/features/cname.py

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -69,17 +69,46 @@ def __init__(
6969

7070
commit_id_or_hash = None
7171

72-
re_match = re.match(
73-
"([a-zA-Z0-9]+([\\_\\-][a-zA-Z0-9]+)*?)(-([a-z0-9]+)(-([a-z0-9.]+)-([a-z0-9]+))*)?$",
74-
cname,
72+
if version is not None:
73+
# Support version values formatted as <version>-<commit_hash>
74+
if commit_hash is None:
75+
re_match = re.match("([a-z0-9.]+)(-([a-z0-9]+))?$", version)
76+
assert re_match, f"Not a valid version {version}"
77+
78+
commit_id_or_hash = re_match[3]
79+
version = re_match[1]
80+
else:
81+
commit_id_or_hash = commit_hash
82+
83+
re_object = re.compile(
84+
"([a-zA-Z0-9]+([\\_\\-][a-zA-Z0-9]+)*?)(-([a-z0-9]+)(-([a-z0-9.]+)-([a-z0-9]+))*)?$"
7585
)
7686

87+
re_match = re_object.match(cname)
88+
89+
# Workaround Garden Linux canonical names without mandatory final commit hash
90+
if (
91+
not re_match
92+
and commit_id_or_hash
93+
and re.match(
94+
"([a-zA-Z0-9]+([\\_\\-][a-zA-Z0-9]+)*?)(-([a-z0-9]+)(-([a-z0-9.]+))*)?$",
95+
cname,
96+
)
97+
):
98+
re_match = re_object.match(f"{cname}-{commit_id_or_hash}")
99+
77100
assert re_match, f"Not a valid Garden Linux canonical name {cname}"
78101

79102
if re_match.lastindex == 1:
80103
self._flavor = re_match[1]
81104
else:
82-
commit_id_or_hash = re_match[7]
105+
if commit_id_or_hash is None:
106+
commit_id_or_hash = re_match[7]
107+
elif re_match.group(7) is not None:
108+
assert commit_id_or_hash == re_match[7], (
109+
f"Mismatch between Garden Linux canonical name {cname} and given commit ID {commit_id_or_hash} detected"
110+
)
111+
83112
self._flavor = re_match[1]
84113
self._version = re_match[6]
85114

@@ -92,16 +121,7 @@ def __init__(
92121
self._arch = arch
93122

94123
if self._version is None and version is not None:
95-
# Support version values formatted as <version>-<commit_hash>
96-
if commit_hash is None:
97-
re_match = re.match("([a-z0-9.]+)(-([a-z0-9]+))?$", version)
98-
assert re_match, f"Not a valid version {version}"
99-
100-
commit_id_or_hash = re_match[3]
101-
self._version = re_match[1]
102-
else:
103-
commit_id_or_hash = commit_hash
104-
self._version = version
124+
self._version = version
105125

106126
if commit_id_or_hash is not None:
107127
self._commit_id = commit_id_or_hash[:8]

0 commit comments

Comments
 (0)