From 443ebf750e13874e50752f98d9b8cf82f4090736 Mon Sep 17 00:00:00 2001
From: Timo Furrer <tfurrer@gitlab.com>
Date: Mon, 8 Apr 2024 10:55:51 +0200
Subject: [PATCH] Use perl to match semver

---
 .gitlab-ci.yml                            | 2 ++
 .gitlab/scripts/check-semantic-version.sh | 8 +++-----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f9ee486..5467ee0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -75,6 +75,8 @@ check-semantic-version:
   rules:
     - if: $CI_COMMIT_TAG
   image: alpine:latest
+  before_script:
+    - apk add perl
   script:
     - echo -n "$CI_COMMIT_TAG" | ./.gitlab/scripts/check-semantic-version.sh
 
diff --git a/.gitlab/scripts/check-semantic-version.sh b/.gitlab/scripts/check-semantic-version.sh
index 539dac8..7a7a5b7 100755
--- a/.gitlab/scripts/check-semantic-version.sh
+++ b/.gitlab/scripts/check-semantic-version.sh
@@ -3,11 +3,9 @@
 # Regex from https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
 SEMANTIC_VERSION_REGEX='^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$'
 
-cat - | grep -qE "$SEMANTIC_VERSION_REGEX"
+match=$(cat - | perl -ne "print if /$SEMANTIC_VERSION_REGEX/")
 
-exit_code=$?
-if [ $exit_code -ne 0 ]; then
+if [ -z "$match" ]; then
   echo "The given version doesn't match the semantic versioning format."
+  exit 1
 fi
-
-exit $exit_code
-- 
GitLab