From 2055d259338b9a83d1cfbc44d83e7ce858585352 Mon Sep 17 00:00:00 2001 From: Bob Jelica Date: Tue, 5 Mar 2024 12:05:23 +0100 Subject: [PATCH 01/13] Lookup action path in a Windows-friendly way --- action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.yml b/action.yml index 6fcbc22..d86945e 100644 --- a/action.yml +++ b/action.yml @@ -80,7 +80,7 @@ runs: using: "composite" steps: - id: version-lookup - run: ${{ github.action_path }}/version-lookup.sh + run: $GITHUB_ACTION_PATH/version-lookup.sh shell: bash env: github_token: ${{ github.token }} From a6b9cc8234448876f1029cf8c4026f296b3e220b Mon Sep 17 00:00:00 2001 From: Bob Jelica Date: Tue, 5 Mar 2024 12:13:08 +0100 Subject: [PATCH 02/13] Fix 2nd location with path as well --- action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/action.yml b/action.yml index d86945e..001202e 100644 --- a/action.yml +++ b/action.yml @@ -88,7 +88,7 @@ runs: use_api: ${{ inputs.use_api }} - id: version-increment - run: ${{ github.action_path }}/version-increment.sh + run: $GITHUB_ACTION_PATH/version-increment.sh shell: bash env: current_version: ${{ steps.version-lookup.outputs.CURRENT_VERSION }} From 0483a06d998c065cbf756c8f0a3cad0c33d06c47 Mon Sep 17 00:00:00 2001 From: Bob Jelica Date: Tue, 5 Mar 2024 13:40:30 +0100 Subject: [PATCH 03/13] Set starting patch number to '1' since increment doesn't work with 0s --- version-lookup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version-lookup.sh b/version-lookup.sh index 1780cc9..6a4d170 100755 --- a/version-lookup.sh +++ b/version-lookup.sh @@ -50,7 +50,7 @@ if [[ -z "${current_version:-}" ]] ; then current_version="0.0.0" ;; calver) - current_version="$(date '+%Y.%-m.0')" + current_version="$(date '+%Y.%-m.1')" ;; esac fi From a121e1106e7321b79b058df2d51b47bd05f660ec Mon Sep 17 00:00:00 2001 From: Bob Jelica Date: Tue, 5 Mar 2024 14:27:19 +0100 Subject: [PATCH 04/13] Fix tests --- tests/test_version-lookup.bats | 27 ++++++++++++++++++--------- version-lookup.sh | 2 +- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/tests/test_version-lookup.bats b/tests/test_version-lookup.bats index b0864e8..86cc114 100644 --- a/tests/test_version-lookup.bats +++ b/tests/test_version-lookup.bats @@ -5,6 +5,15 @@ load helper_print-info export repo=".tmp_testing/repo" +setup() { + # get the containing directory of this file + # use $BATS_TEST_FILENAME instead of ${BASH_SOURCE[0]} or $0, + # as those will point to the bats executable's location or the preprocessed file respectively + DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" + # make executables in src/ visible to PATH + PATH="$DIR/../:$PATH" +} + function init_repo { rm -rf "${repo}" && mkdir -p "${repo}" && @@ -22,7 +31,7 @@ function init_repo { export scheme="foover" - run ../../version-lookup.sh + run version-lookup.sh print_run_info [ "$status" -eq 8 ] && @@ -30,7 +39,7 @@ function init_repo { } @test "no deprecated set-output calls made" { - run grep -q "::set-output" version-lookup.sh + run grep -q "::set-output" ../version-lookup.sh print_run_info [ "$status" -eq 1 ] @@ -43,7 +52,7 @@ function init_repo { git tag 0.1.1 git tag 0.1.2 - run ../../version-lookup.sh + run version-lookup.sh print_run_info [ "$status" -eq 0 ] && @@ -55,7 +64,7 @@ function init_repo { git tag 0.1.2 - run ../../version-lookup.sh + run version-lookup.sh print_run_info [ "$status" -eq 0 ] && @@ -69,7 +78,7 @@ function init_repo { git tag 1.2.300 git tag 1.2.301-dev.234 - run ../../version-lookup.sh + run version-lookup.sh print_run_info [ "$status" -eq 0 ] && @@ -79,7 +88,7 @@ function init_repo { @test "returns 0.0.0 if no normal version detected" { init_repo - run ../../version-lookup.sh + run version-lookup.sh print_run_info [ "$status" -eq 0 ] && @@ -91,7 +100,7 @@ function init_repo { git tag 0.0.1-dev.999 - run ../../version-lookup.sh + run version-lookup.sh print_run_info [ "$status" -eq 0 ] && @@ -103,7 +112,7 @@ function init_repo { export scheme="calver" - run ../../version-lookup.sh + run version-lookup.sh print_run_info [ "$status" -eq 0 ] && @@ -115,7 +124,7 @@ function init_repo { git tag v3.4.5 - run ../../version-lookup.sh + run version-lookup.sh print_run_info [ "$status" -eq 0 ] && diff --git a/version-lookup.sh b/version-lookup.sh index 6a4d170..1780cc9 100755 --- a/version-lookup.sh +++ b/version-lookup.sh @@ -50,7 +50,7 @@ if [[ -z "${current_version:-}" ]] ; then current_version="0.0.0" ;; calver) - current_version="$(date '+%Y.%-m.1')" + current_version="$(date '+%Y.%-m.0')" ;; esac fi From d4ed669f7fca63cef7d26bc49053b1d0e31c7c76 Mon Sep 17 00:00:00 2001 From: Bob Jelica Date: Tue, 5 Mar 2024 15:49:05 +0100 Subject: [PATCH 05/13] Fix other test + add more debugging for windows --- tests/test_version-increment.bats | 45 ++++++++++++++++++------------- version-increment.sh | 2 ++ 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/tests/test_version-increment.bats b/tests/test_version-increment.bats index bdb4834..0a4fded 100644 --- a/tests/test_version-increment.bats +++ b/tests/test_version-increment.bats @@ -1,6 +1,15 @@ #!/usr/bin/env bats # vim: set ft=sh sw=4 : +setup() { + # get the containing directory of this file + # use $BATS_TEST_FILENAME instead of ${BASH_SOURCE[0]} or $0, + # as those will point to the bats executable's location or the preprocessed file respectively + DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" + # make executables in src/ visible to PATH + PATH="$DIR/../:$PATH" +} + load helper_print-info export repo=".tmp_testing/repo" @@ -22,7 +31,7 @@ function init_repo { @test "fails if no current_version given" { init_repo - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 8 ] && @@ -34,7 +43,7 @@ function init_repo { export current_version=1.3.5-prerelease - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 8 ] && @@ -46,7 +55,7 @@ function init_repo { export scheme="foover" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 8 ] && @@ -58,7 +67,7 @@ function init_repo { export pep440="yes" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 8 ] && @@ -70,7 +79,7 @@ function init_repo { export increment="critical" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 8 ] && @@ -78,7 +87,7 @@ function init_repo { } @test "no deprecated set-output calls made" { - run grep -q "::set-output" version-increment.sh + run grep -q "::set-output" ../version-increment.sh print_run_info [ "$status" -eq 1 ] @@ -90,7 +99,7 @@ function init_repo { export current_version=1.2.3 export increment="patch" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 0 ] && @@ -106,7 +115,7 @@ function init_repo { export current_version=1.2.3 export increment="minor" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 0 ] && @@ -123,7 +132,7 @@ function init_repo { export pep404="false" export increment="minor" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 0 ] && @@ -139,7 +148,7 @@ function init_repo { export current_version=1.2.3 export increment="major" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 0 ] && @@ -156,7 +165,7 @@ function init_repo { export pep404="true" export increment="major" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 0 ] && @@ -172,7 +181,7 @@ function init_repo { export current_version=1.2.3 export increment="major" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 0 ] && @@ -189,7 +198,7 @@ function init_repo { export current_version=2020.6.4 export scheme="calver" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 0 ] && @@ -202,7 +211,7 @@ function init_repo { export current_version="$(date +%Y.%-m.123)" export scheme="calver" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 0 ] && @@ -216,7 +225,7 @@ function init_repo { export GITHUB_REF="refs/heads/super-awesome-feature" export short_ref="$(git rev-parse --short HEAD | sed 's/0*//')" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 0 ] && @@ -231,7 +240,7 @@ function init_repo { export GITHUB_REF="refs/heads/releases" export release_branch="releases" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 0 ] && @@ -248,7 +257,7 @@ function init_repo { export GITHUB_REF="refs/heads/super-awesome-python" export short_ref="$(git rev-parse --short HEAD | sed 's/0*//')" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 0 ] && @@ -265,7 +274,7 @@ function init_repo { export GITHUB_REF="refs/heads/super-awesome-python" export short_ref="$(git rev-parse --short HEAD | sed 's/0*//')" - run ../../version-increment.sh + run version-increment.sh print_run_info [ "$status" -eq 0 ] && diff --git a/version-increment.sh b/version-increment.sh index 9fef875..629873a 100755 --- a/version-increment.sh +++ b/version-increment.sh @@ -12,6 +12,8 @@ if [[ "${increment}" != 'patch' && "${increment}" != 'minor' && "${increment}" ! input_errors='true' fi +echo "â„šī¸ INCREMENTER: The current normal version is ${current_version}" + if [[ -z "${current_version:-}" ]] ; then echo "🛑 Environment variable 'current_version' is unset or empty" 1>&2 input_errors='true' From f16cac75c5cfe43dd9ad2065fc254227659993dd Mon Sep 17 00:00:00 2001 From: Bob Jelica Date: Tue, 5 Mar 2024 16:13:48 +0100 Subject: [PATCH 06/13] Try forcing locale for grep --- shared.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shared.sh b/shared.sh index 714587a..4698477 100644 --- a/shared.sh +++ b/shared.sh @@ -68,13 +68,13 @@ fi function grep_p() { if [[ "${use_perl}" == 'true' ]] ; then - perl -ne "print if /${1}/" + LC_ALL=C perl -ne "print if /${1}/" elif [[ "${use_gnugrep}" == 'true' ]] ; then # shellcheck disable=SC2086 - ggrep -P "${1}" + LC_ALL=C ggrep -P "${1}" else # shellcheck disable=SC2086 - command grep -P "${1}" + LC_ALL=C command grep -P "${1}" fi } From 31658465434e747ed7a371485544be83aae45343 Mon Sep 17 00:00:00 2001 From: Bob Jelica Date: Tue, 5 Mar 2024 16:36:54 +0100 Subject: [PATCH 07/13] Force utf8 before grepping --- shared.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/shared.sh b/shared.sh index 4698477..5f8c099 100644 --- a/shared.sh +++ b/shared.sh @@ -68,13 +68,13 @@ fi function grep_p() { if [[ "${use_perl}" == 'true' ]] ; then - LC_ALL=C perl -ne "print if /${1}/" + LC_ALL=C.UTF-8 perl -ne "print if /${1}/" elif [[ "${use_gnugrep}" == 'true' ]] ; then # shellcheck disable=SC2086 - LC_ALL=C ggrep -P "${1}" + LC_ALL=C.UTF-8 ggrep -P "${1}" else # shellcheck disable=SC2086 - LC_ALL=C command grep -P "${1}" + LC_ALL=C.UTF-8 command grep -P "${1}" fi } From b51c5176048cc5e3a683e0c4902addd326bf4750 Mon Sep 17 00:00:00 2001 From: Bob Jelica Date: Tue, 5 Mar 2024 17:04:45 +0100 Subject: [PATCH 08/13] Force utf8 for all commands during execution --- shared.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/shared.sh b/shared.sh index 5f8c099..8fe79cc 100644 --- a/shared.sh +++ b/shared.sh @@ -2,6 +2,9 @@ # shellcheck disable=SC2034 set -euo pipefail +# Force UTF-8 for all commands, for Git-Bash on Windows compatibility +export LC_ALL=C.UTF-8 + ##==---------------------------------------------------------------------------- ## SemVer regexes ## see: https://semver.org/spec/v2.0.0.html#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string @@ -68,13 +71,13 @@ fi function grep_p() { if [[ "${use_perl}" == 'true' ]] ; then - LC_ALL=C.UTF-8 perl -ne "print if /${1}/" + perl -ne "print if /${1}/" elif [[ "${use_gnugrep}" == 'true' ]] ; then # shellcheck disable=SC2086 - LC_ALL=C.UTF-8 ggrep -P "${1}" + ggrep -P "${1}" else # shellcheck disable=SC2086 - LC_ALL=C.UTF-8 command grep -P "${1}" + command grep -P "${1}" fi } From 192637163ee44ca8c146e55fe93643c67c720bc6 Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Wed, 24 Apr 2024 12:12:29 +1000 Subject: [PATCH 09/13] Enable testing on Windows --- .github/workflows/test-and-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-and-release.yml b/.github/workflows/test-and-release.yml index ad348a7..e52fe2d 100644 --- a/.github/workflows/test-and-release.yml +++ b/.github/workflows/test-and-release.yml @@ -77,7 +77,7 @@ jobs: os: - macos-latest - ubuntu-latest - # - windows-latest -- coming soon, https://github.com/reecetech/version-increment/pull/30 + - windows-latest fail-fast: true runs-on: ${{ matrix.os }} steps: From 238431148e7b52481aeed6da172b9f359bce2743 Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Wed, 24 Apr 2024 12:16:55 +1000 Subject: [PATCH 10/13] Remove log message - Message is using a variable that's not confirmed as set yet - Message is output by `version-lookup.sh` in normal operation anyway --- version-increment.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/version-increment.sh b/version-increment.sh index 629873a..9fef875 100755 --- a/version-increment.sh +++ b/version-increment.sh @@ -12,8 +12,6 @@ if [[ "${increment}" != 'patch' && "${increment}" != 'minor' && "${increment}" ! input_errors='true' fi -echo "â„šī¸ INCREMENTER: The current normal version is ${current_version}" - if [[ -z "${current_version:-}" ]] ; then echo "🛑 Environment variable 'current_version' is unset or empty" 1>&2 input_errors='true' From 512aaef59ff6b6fde6a8b47b9c1f293280b03a41 Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Wed, 24 Apr 2024 12:18:29 +1000 Subject: [PATCH 11/13] Fix: file location after rework of tests --- tests/test_version-increment.bats | 2 +- tests/test_version-lookup.bats | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_version-increment.bats b/tests/test_version-increment.bats index 0a4fded..1638a7d 100644 --- a/tests/test_version-increment.bats +++ b/tests/test_version-increment.bats @@ -87,7 +87,7 @@ function init_repo { } @test "no deprecated set-output calls made" { - run grep -q "::set-output" ../version-increment.sh + run grep -q "::set-output" version-increment.sh print_run_info [ "$status" -eq 1 ] diff --git a/tests/test_version-lookup.bats b/tests/test_version-lookup.bats index 86cc114..7373e37 100644 --- a/tests/test_version-lookup.bats +++ b/tests/test_version-lookup.bats @@ -39,7 +39,7 @@ function init_repo { } @test "no deprecated set-output calls made" { - run grep -q "::set-output" ../version-lookup.sh + run grep -q "::set-output" version-lookup.sh print_run_info [ "$status" -eq 1 ] From 16351e1923e7ece99d73d60eda1910db7ac1db93 Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Wed, 24 Apr 2024 12:28:33 +1000 Subject: [PATCH 12/13] Update to use brace variable referencing https://stackoverflow.com/a/8748880 --- action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/action.yml b/action.yml index 001202e..5975dde 100644 --- a/action.yml +++ b/action.yml @@ -80,7 +80,7 @@ runs: using: "composite" steps: - id: version-lookup - run: $GITHUB_ACTION_PATH/version-lookup.sh + run: "${GITHUB_ACTION_PATH}/version-lookup.sh" shell: bash env: github_token: ${{ github.token }} @@ -88,7 +88,7 @@ runs: use_api: ${{ inputs.use_api }} - id: version-increment - run: $GITHUB_ACTION_PATH/version-increment.sh + run: "${GITHUB_ACTION_PATH}/version-increment.sh" shell: bash env: current_version: ${{ steps.version-lookup.outputs.CURRENT_VERSION }} From 8df12f2eb1723ed000edd2dfcbf6f730eb110de8 Mon Sep 17 00:00:00 2001 From: Phil Jay Date: Wed, 24 Apr 2024 12:33:43 +1000 Subject: [PATCH 13/13] Update README --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 36e23e1..9eeadb7 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,10 @@ ## Use 📄 +> [!NOTE] +> This action is confirmed to work on all three of GitHub's hosted runners - +> `ubuntu-latest`, `macos-latest` and `windows-latest` - at the point in time of the release of the action + ### Example âŒ¨ī¸ ```yaml @@ -9,7 +13,7 @@ uses: actions/checkout@v4 - name: Get next version - uses: reecetech/version-increment@2023.9.3 + uses: reecetech/version-increment@2024.4.3 id: version with: scheme: semver @@ -30,7 +34,7 @@ use the API mode: ```yaml - name: Get next version - uses: reecetech/version-increment@2024.4.1 + uses: reecetech/version-increment@2024.4.3 id: version with: use_api: true