Extract major.minor.patch version from scripts/build.mjs

Update extraction to capture a quoted semver with optional prerelease,
strip to major.minor.patch and improve validation messaging
This commit is contained in:
kmmiio99o 2025-10-31 20:51:47 +01:00
parent f1745f29f2
commit 8dcf5f2f34

View file

@ -43,12 +43,15 @@ jobs:
echo '--- scripts/build.mjs (snippet) ---' >&2 echo '--- scripts/build.mjs (snippet) ---' >&2
sed -n '1,200p' scripts/build.mjs >&2 || true sed -n '1,200p' scripts/build.mjs >&2 || true
# Primary extraction: find the first quoted four-segment version # Primary extraction: find the first quoted semver (may include prerelease suffix)
version=$(grep -E 'version[:=]' scripts/build.mjs | grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -1 || true) raw=$(grep -m1 -oE '"[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?"' scripts/build.mjs | tr -d '"' | head -n1 || true)
# Validate final result is exactly major.minor.patch.build # Strip any prerelease suffix, keep only major.minor.patch
if ! printf '%s' "$version" | grep -xE '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' >/dev/null; then version=$(printf '%s' "$raw" | sed -E 's/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/')
echo "Failed to extract a valid four-segment version from scripts/build.mjs" >&2
# Validate final result is exactly major.minor.patch
if ! printf '%s' "$version" | grep -xE '^[0-9]+\.[0-9]+\.[0-9]+$' >/dev/null; then
echo "Failed to extract a valid base version from scripts/build.mjs" >&2
sed -n '1,200p' scripts/build.mjs >&2 || true sed -n '1,200p' scripts/build.mjs >&2 || true
exit 1 exit 1
fi fi