From e0e1ac60ae4a50b9516dae684b16425f3a254189 Mon Sep 17 00:00:00 2001 From: Romain Lespinasse Date: Wed, 8 Dec 2021 21:24:03 +0100 Subject: [PATCH] feat: support prepend text to variable names --- .github/workflows/slugify-value.yaml | 27 ++++++++++++++++++++++++--- README.md | 25 +++++++++++++++++++++++++ action.yml | 5 +++++ slugify.sh | 12 +++++++----- 4 files changed, 61 insertions(+), 8 deletions(-) diff --git a/.github/workflows/slugify-value.yaml b/.github/workflows/slugify-value.yaml index a90ab12..19abc8d 100644 --- a/.github/workflows/slugify-value.yaml +++ b/.github/workflows/slugify-value.yaml @@ -7,6 +7,9 @@ jobs: matrix: os: [macos-latest, ubuntu-latest, windows-latest] runs-on: ${{ matrix.os }} + concurrency: + group: slugify-on-os-${{ github.ref }} + cancel-in-progress: true steps: - name: Checkout uses: actions/checkout@v2 @@ -18,7 +21,7 @@ jobs: key: KEY_TEST env: KEY_TEST: Key_Test.values - - name: Test result of key only + - name: Validate // Slugify key only run: | [[ "${{ env.KEY_TEST }}" == "Key_Test.values" ]] [[ "${{ env.KEY_TEST_SLUG }}" == "key_test.values" ]] @@ -28,12 +31,29 @@ jobs: shell: bash # Test 2 + - name: Slugify key only with prefix + uses: ./ + with: + key: KEY_TEST + prefix: CI_ + env: + KEY_TEST: Key_Test.values + - name: Validate // Slugify key only with prefix + run: | + [[ "${{ env.CI_KEY_TEST }}" == "${{ env.KEY_TEST }}" ]] + [[ "${{ env.CI_KEY_TEST_SLUG }}" == "${{ env.KEY_TEST_SLUG }}" ]] + [[ "${{ env.CI_KEY_TEST_SLUG_CS }}" == "${{ env.KEY_TEST_SLUG_CS }}" ]] + [[ "${{ env.CI_KEY_TEST_SLUG_URL }}" == "${{ env.KEY_TEST_SLUG_URL }}" ]] + [[ "${{ env.CI_KEY_TEST_SLUG_URL_CS }}" == "${{ env.KEY_TEST_SLUG_URL_CS }}" ]] + shell: bash + + # Test 3 - name: Slugify key/value uses: ./ with: key: KEY_VALUE_TEST value: refs/pulls/feat/-----Some----Changes_to.be------ - - name: Test result of key only + - name: Validate // Slugify key/value run: | [[ "${{ env.KEY_VALUE_TEST }}" == "refs/pulls/feat/-----Some----Changes_to.be------" ]] [[ "${{ env.KEY_VALUE_TEST_SLUG }}" == "feat-some-changes_to.be" ]] @@ -44,6 +64,8 @@ jobs: slugify-release: runs-on: ubuntu-latest + concurrency: + group: slugify-release-${{ github.ref }} needs: slugify-on-os steps: - name: Checkout @@ -52,4 +74,3 @@ jobs: # Release - name: Release this GitHub Action uses: rlespinasse/release-that@v1.x - diff --git a/README.md b/README.md index 52d23df..e33b45c 100644 --- a/README.md +++ b/README.md @@ -52,3 +52,28 @@ Produce some `slug`-ed environment variables based on the input one. - `EXISTING_ENV_VAR_SLUG_CS` - `EXISTING_ENV_VAR_SLUG_URL` - `EXISTING_ENV_VAR_SLUG_URL_CS` + +- Slugify the value of an environment variable with prefix + + ```yaml + - uses: rlespinasse/slugify-value@v1.x + with: + key: EXISTING_ENV_VAR + prefix: CI_ + ``` + + Will make available + + - `CI_EXISTING_ENV_VAR` + - `CI_EXISTING_ENV_VAR_SLUG` + - `CI_EXISTING_ENV_VAR_SLUG_CS` + - `CI_EXISTING_ENV_VAR_SLUG_URL` + - `CI_EXISTING_ENV_VAR_SLUG_URL_CS` + +## Inputs + +### `prefix` + +The value will be prepend to each generated variable. + +This input is _Optional_. diff --git a/action.yml b/action.yml index e6c2b95..48fc2eb 100644 --- a/action.yml +++ b/action.yml @@ -8,6 +8,10 @@ inputs: value: description: "Value to slugify" required: false + prefix: + description: "Value to prepend to each generated variable" + default: "" + required: false branding: icon: "crop" color: "gray-dark" @@ -19,3 +23,4 @@ runs: env: INPUT_KEY: ${{ inputs.key }} INPUT_VALUE: ${{ inputs.value }} + INPUT_PREFIX: ${{ inputs.prefix }} diff --git a/slugify.sh b/slugify.sh index 3b703d8..610b3ba 100755 --- a/slugify.sh +++ b/slugify.sh @@ -6,10 +6,12 @@ if [[ "$OSTYPE" == "darwin"* ]]; then KEY=$(echo "$INPUT_KEY" | tr '[:lower:]' '[:upper:]') CS_VALUE=${INPUT_VALUE:-${!INPUT_KEY}} VALUE=$(echo "$CS_VALUE" | tr '[:upper:]' '[:lower:]') + PREFIX=$(echo "$INPUT_PREFIX" | tr '[:lower:]' '[:upper:]') else KEY=${INPUT_KEY^^} CS_VALUE=${INPUT_VALUE:-${!INPUT_KEY}} VALUE=${CS_VALUE,,} + PREFIX=${INPUT_PREFIX^^} fi slug() { @@ -25,9 +27,9 @@ slug_url() { } { - echo "${KEY}=${CS_VALUE}" - echo "${KEY}_SLUG=$(slug "$VALUE")" - echo "${KEY}_SLUG_CS=$(slug "$CS_VALUE")" - echo "${KEY}_SLUG_URL=$(slug_url "$VALUE")" - echo "${KEY}_SLUG_URL_CS=$(slug_url "$CS_VALUE")" + echo "${PREFIX}${KEY}=${CS_VALUE}" + echo "${PREFIX}${KEY}_SLUG=$(slug "$VALUE")" + echo "${PREFIX}${KEY}_SLUG_CS=$(slug "$CS_VALUE")" + echo "${PREFIX}${KEY}_SLUG_URL=$(slug_url "$VALUE")" + echo "${PREFIX}${KEY}_SLUG_URL_CS=$(slug_url "$CS_VALUE")" } >>"$GITHUB_ENV"