From a54c16bb3513d1a359b05653784114b46538c7d3 Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Thu, 21 Oct 2021 23:38:24 +1100 Subject: [PATCH] Rework for slightly better code style --- README.md | 2 +- shared.sh | 15 +++++++++++- ...ement.bats => test_version-increment.bats} | 8 +++---- ...n_lookup.bats => test_version-lookup.bats} | 0 version-increment.sh | 24 ++++++++----------- version-lookup.sh | 4 +--- 6 files changed, 29 insertions(+), 24 deletions(-) rename tests/{test_version_increment.bats => test_version-increment.bats} (95%) rename tests/{test_version_lookup.bats => test_version-lookup.bats} (100%) diff --git a/README.md b/README.md index 31b3807..0f57d5e 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ```yaml - name: Get next version - uses: reecetech/version-increment@2021.10.3 + uses: reecetech/version-increment@2021.10.4 id: version with: scheme: semver diff --git a/shared.sh b/shared.sh index c41fb9c..953506c 100644 --- a/shared.sh +++ b/shared.sh @@ -2,12 +2,25 @@ # shellcheck disable=SC2034 set -euo pipefail -# see: https://semver.org/spec/v2.0.0.html#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string +##==---------------------------------------------------------------------------- +## SemVer regexes +## see: https://semver.org/spec/v2.0.0.html#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string + pcre_semver='^(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)(?:-(?P(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$' pcre_master_ver='^(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)\.(?P0|[1-9]\d*)$' pcre_allow_vprefix="^v{0,1}${pcre_master_ver:1}" pcre_old_calver='^(?P0|[1-9]\d*)-0{0,1}(?P0|[0-9]\d*)-R(?P0|[1-9]\d*)$' +##==---------------------------------------------------------------------------- +## Input validation + +input_errors='false' +scheme="${INPUT_SCHEME:-semver}" +if [[ "${scheme}" != 'semver' && "${scheme}" != 'calver' ]] ; then + echo "🛑 Value of 'scheme' is not valid, choose from 'semver' or 'calver'" 1>&2 + input_errors='true' +fi + ##==---------------------------------------------------------------------------- ## MacOS compatibility - for local testing diff --git a/tests/test_version_increment.bats b/tests/test_version-increment.bats similarity index 95% rename from tests/test_version_increment.bats rename to tests/test_version-increment.bats index 2051fa4..2c9669c 100644 --- a/tests/test_version_increment.bats +++ b/tests/test_version-increment.bats @@ -25,7 +25,7 @@ function init_repo { run ../../version-increment.sh print_run_info - [ "$status" -eq 5 ] && + [ "$status" -eq 8 ] && [[ "$output" = *"Environment variable 'current_version' is unset or empty"* ]] } @@ -37,14 +37,13 @@ function init_repo { run ../../version-increment.sh print_run_info - [ "$status" -eq 6 ] && + [ "$status" -eq 8 ] && [[ "$output" = *"Environment variable 'current_version' is not a valid normal version"* ]] } @test "fails if invalid scheme given" { init_repo - export current_version=1.2.3 export INPUT_SCHEME="foover" run ../../version-increment.sh @@ -57,13 +56,12 @@ function init_repo { @test "fails if invalid increment given" { init_repo - export current_version=1.2.3 export INPUT_INCREMENT="critical" run ../../version-increment.sh print_run_info - [ "$status" -eq 7 ] && + [ "$status" -eq 8 ] && [[ "$output" = *"Value of 'increment' is not valid, choose from 'major', 'minor', or 'patch'"* ]] } diff --git a/tests/test_version_lookup.bats b/tests/test_version-lookup.bats similarity index 100% rename from tests/test_version_lookup.bats rename to tests/test_version-lookup.bats diff --git a/version-increment.sh b/version-increment.sh index 39309c6..17d5dd8 100755 --- a/version-increment.sh +++ b/version-increment.sh @@ -6,25 +6,21 @@ script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" # shellcheck source=shared.sh source "${script_dir}/shared.sh" -if [[ -z "${current_version:-}" ]] ; then - echo "🛑 Environment variable 'current_version' is unset or empty" 1>&2 - exit 5 -fi - -if [[ -z "$(echo "${current_version}" | ${grep} -P "${pcre_master_ver}")" ]] ; then - echo "🛑 Environment variable 'current_version' is not a valid normal version (M.m.p)" 1>&2 - exit 6 -fi - increment="${INPUT_INCREMENT:-patch}" if [[ "${increment}" != 'patch' && "${increment}" != 'minor' && "${increment}" != 'major' ]] ; then echo "🛑 Value of 'increment' is not valid, choose from 'major', 'minor', or 'patch'" 1>&2 - exit 7 + input_errors='true' fi -scheme="${INPUT_SCHEME:-semver}" -if [[ "${scheme}" != 'semver' && "${scheme}" != 'calver' ]] ; then - echo "🛑 Value of 'scheme' is not valid, choose from 'semver' or 'calver'" 1>&2 +if [[ -z "${current_version:-}" ]] ; then + echo "🛑 Environment variable 'current_version' is unset or empty" 1>&2 + input_errors='true' +elif [[ -z "$(echo "${current_version}" | ${grep} -P "${pcre_master_ver}")" ]] ; then + echo "🛑 Environment variable 'current_version' is not a valid normal version (M.m.p)" 1>&2 + input_errors='true' +fi + +if [[ "${input_errors}" == 'true' ]] ; then exit 8 fi diff --git a/version-lookup.sh b/version-lookup.sh index ac09baf..cedff1a 100755 --- a/version-lookup.sh +++ b/version-lookup.sh @@ -6,9 +6,7 @@ script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" # shellcheck source=shared.sh source "${script_dir}/shared.sh" -scheme="${INPUT_SCHEME:-semver}" -if [[ "${scheme}" != 'semver' && "${scheme}" != 'calver' ]] ; then - echo "🛑 Value of 'scheme' is not valid, choose from 'semver' or 'calver'" 1>&2 +if [[ "${input_errors}" == 'true' ]] ; then exit 8 fi