From cb3e46ca61b91a1cbf90139405e86af5342276cf Mon Sep 17 00:00:00 2001 From: Romain Lespinasse Date: Wed, 15 Jun 2022 15:48:10 +0200 Subject: [PATCH] fix(slug_url): remove ending hypen if any --- .github/workflows/slugify-value.yaml | 2 +- README.md | 1 + slugify.sh | 17 ++++++++++------- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/slugify-value.yaml b/.github/workflows/slugify-value.yaml index af71b44..f95704d 100644 --- a/.github/workflows/slugify-value.yaml +++ b/.github/workflows/slugify-value.yaml @@ -75,7 +75,7 @@ jobs: with: key: ANOTHER_MAX_LENGTH value: "Never gonna give you up Never gonna let you down" - slug-maxlength: 23 + slug-maxlength: 24 - name: Validate // Slugify with another max length run: | [[ "${{ env.ANOTHER_MAX_LENGTH }}" == "Never gonna give you up Never gonna let you down" ]] diff --git a/README.md b/README.md index fa99dd5..0c18ae2 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,7 @@ Produce some `slug`-ed environment variables based on the input one. - `_SLUG_URL` (or `_SLUG_URL_CS`) - like `_SLUG` (or `_SLUG_CS`) with the `.`, and `_` characters also replaced by `-` + - will not end with `-` ## Usage diff --git a/slugify.sh b/slugify.sh index d273694..c3d1af8 100755 --- a/slugify.sh +++ b/slugify.sh @@ -33,7 +33,7 @@ slug() { # 3d : Remove leading dashes # 4d : Remove trailing dashes output=$(sed -E 's#refs/[^\/]*/##;s/[^a-zA-Z0-9._-]+/-/g;s/^-*//;s/-*$//' <<<"$1") - reduce "$output" + reduce "$output" false } slug_url() { @@ -42,16 +42,19 @@ slug_url() { # 3d : Remove leading dashes # 4d : Remove trailing dashes output=$(sed -E 's#refs/[^\/]*/##;s/[^a-zA-Z0-9-]+/-/g;s/^-*//;s/-*$//' <<<"$1") - reduce "$output" + reduce "$output" true } reduce() { - if [ "${MAX_LENGTH}" == "nolimit" ]; then - echo "$1" - else - cut -c1-"${MAX_LENGTH}" <<<"$1" + reduced_value="$1" + remove_ending_hypen="$2" + if [ "${MAX_LENGTH}" != "nolimit" ]; then + reduced_value=$(cut -c1-"${MAX_LENGTH}" <<<"$1") fi -} + if [ "remove_ending_hypen" == "true" ]; then + reduced_value="${reduced_value//-*$/}" + fi + echo "$reduced_value" SLUG_VALUE=$(slug "$VALUE") SLUG_CS_VALUE=$(slug "$CS_VALUE")