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")