Files
slugify-value/slugify.sh
2022-03-22 15:58:25 +01:00

55 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
if [[ "$OSTYPE" == "darwin"* ]]; then
# On MacOS,
# bash don't support substitution, so we use 'tr'
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
MAX_LENGTH=""
if [ -z "${INPUT_SLUG_MAXLENGTH}" ]; then
echo "::error ::slug-maxlength cannot be empty"
exit 1
elif [ "${INPUT_SLUG_MAXLENGTH}" -eq "${INPUT_SLUG_MAXLENGTH}" ] 2>/dev/null; then
MAX_LENGTH="${INPUT_SLUG_MAXLENGTH}"
elif [ "${INPUT_SLUG_MAXLENGTH}" == "nolimit" ]; then
MAX_LENGTH="${INPUT_SLUG_MAXLENGTH}"
else
echo "::error ::slug-maxlength must be a number or equals to 'nolimit'"
exit 1
fi
slug() {
output=$(sed -E 's#refs/[^\/]*/##;s/[^a-zA-Z0-9._-]+/-/g;s/-+/-/g;s/^-*//;s/-*$//' <<<"$1")
reduce "$output"
}
slug_url() {
output=$(sed -E 's#refs/[^\/]*/##;s/[^a-zA-Z0-9_-]+/-/g;s/-+/-/g;s/^-*//;s/-*$//' <<<"$1")
reduce "$output"
}
reduce() {
if [ "${MAX_LENGTH}" == "nolimit" ]; then
echo "$1"
else
cut -c1-"${MAX_LENGTH}" <<<"$1"
fi
}
{
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"