From 4e258f56efa910b6d5bc2ebb336523e885f8a8b7 Mon Sep 17 00:00:00 2001 From: Romain Lespinasse Date: Wed, 15 Jun 2022 16:06:49 +0200 Subject: [PATCH] fix(slug_url): remove ending hypen if any --- .github/workflows/slugify-value.yaml | 6 +++--- README.md | 1 + slugify.sh | 16 ++++++++++------ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/.github/workflows/slugify-value.yaml b/.github/workflows/slugify-value.yaml index af71b44..2950fd2 100644 --- a/.github/workflows/slugify-value.yaml +++ b/.github/workflows/slugify-value.yaml @@ -75,12 +75,12 @@ 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" ]] - [[ "${{ env.ANOTHER_MAX_LENGTH_SLUG }}" == "never-gonna-give-you-up" ]] - [[ "${{ env.ANOTHER_MAX_LENGTH_SLUG_CS }}" == "Never-gonna-give-you-up" ]] + [[ "${{ env.ANOTHER_MAX_LENGTH_SLUG }}" == "never-gonna-give-you-up-" ]] + [[ "${{ env.ANOTHER_MAX_LENGTH_SLUG_CS }}" == "Never-gonna-give-you-up-" ]] [[ "${{ env.ANOTHER_MAX_LENGTH_SLUG_URL }}" == "never-gonna-give-you-up" ]] [[ "${{ env.ANOTHER_MAX_LENGTH_SLUG_URL_CS }}" == "Never-gonna-give-you-up" ]] shell: bash 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..f692907 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,15 +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=$(sed -E 's/-*$//' <<<"$reduced_value") + fi + echo "$reduced_value" } SLUG_VALUE=$(slug "$VALUE")