diff --git a/action.yml b/action.yml index 7861f24..8a9bff9 100644 --- a/action.yml +++ b/action.yml @@ -11,6 +11,10 @@ inputs: description: 'Versioning scheme - semver, or, calver (defaults to semver)' required: false default: 'semver' + pep440: + description: 'PEP440 compatibility mode - shifts the pre-release version information into build metadata instead' + required: false + default: false increment: description: | Field to increment - major, minor, or, patch (defaults to patch) @@ -69,4 +73,5 @@ runs: env: current_version: ${{ steps.version-lookup.outputs.CURRENT_VERSION }} increment: ${{ inputs.increment }} + pep440: ${{ inputs.pep440 }} scheme: ${{ inputs.scheme }} diff --git a/shared.sh b/shared.sh index 4476f28..ee14092 100644 --- a/shared.sh +++ b/shared.sh @@ -16,8 +16,14 @@ pcre_old_calver='^(?P0|[1-9]\d*)-0{0,1}(?P0|[0-9]\d*)-R(?P0 input_errors='false' scheme="${scheme:-semver}" -if [[ "${scheme}" != 'semver' && "${scheme}" != 'calver' && "${scheme}" != 'pep440' ]] ; then - echo "🛑 Value of 'scheme' is not valid, choose from 'semver', 'calver', or 'pep440'" 1>&2 +if [[ "${scheme}" != 'semver' && "${scheme}" != 'calver' ]] ; then + echo "🛑 Value of 'scheme' is not valid, choose from 'semver' or 'calver'" 1>&2 + input_errors='true' +fi + +pep440="${pep440:-false}" +if [[ "${pep440}" != 'false' && "${pep440}" != 'true' ]] ; then + echo "🛑 Value of 'pep440' is not valid, choose from 'false' or 'true'" 1>&2 input_errors='true' fi diff --git a/tests/test_version-increment.bats b/tests/test_version-increment.bats index 52512f0..b911f4e 100644 --- a/tests/test_version-increment.bats +++ b/tests/test_version-increment.bats @@ -53,6 +53,18 @@ function init_repo { [[ "$output" = *"Value of 'scheme' is not valid"* ]] } +@test "fails if invalid value for pep440 given" { + init_repo + + export pep440="yes" + + run ../../version-increment.sh + + print_run_info + [ "$status" -eq 8 ] && + [[ "$output" = *"Value of 'pep440' is not valid"* ]] +} + @test "fails if invalid increment given" { init_repo @@ -104,6 +116,23 @@ function init_repo { [[ "$output" = *"VERSION=1.3.0"* ]] } +@test "increments the minor digit correctly (explicitly not pep440)" { + init_repo + + export current_version=1.2.3 + export pep404="false" + export increment="minor" + + run ../../version-increment.sh + + print_run_info + [ "$status" -eq 0 ] && + [[ "$output" = *"MAJOR_VERSION=1"* ]] && + [[ "$output" = *"MINOR_VERSION=3"* ]] && + [[ "$output" = *"PATCH_VERSION=0"* ]] && + [[ "$output" = *"VERSION=1.3.0"* ]] +} + @test "increments the major digit correctly (semver)" { init_repo @@ -120,11 +149,11 @@ function init_repo { [[ "$output" = *"VERSION=2.0.0"* ]] } -@test "increments the major digit correctly (pep440)" { +@test "increments the major digit correctly (pep440 mode)" { init_repo export current_version=1.2.3 - export scheme="pep440" + export pep404="true" export increment="major" run ../../version-increment.sh @@ -199,7 +228,7 @@ function init_repo { init_repo export current_version=10.20.30 - export scheme="pep440" + export pep440="true" export GITHUB_REF="refs/heads/super-awesome-python" export short_ref="$(git rev-parse --short HEAD | sed 's/0*//')" diff --git a/version-increment.sh b/version-increment.sh index 1c91ec4..e3ac75d 100755 --- a/version-increment.sh +++ b/version-increment.sh @@ -75,7 +75,7 @@ fi # add pre-release info to version if not the default branch if [[ "${current_ref}" != "refs/heads/${default_branch}" ]] ; then pre_release="pre.${git_commit}" - if [[ "${scheme}" == 'pep440' ]] ; then + if [[ "${pep440:-}" == 'true' ]] ; then new_version="${new_version}+${pre_release}" else new_version="${new_version}-${pre_release}" diff --git a/version-lookup.sh b/version-lookup.sh index 90da3be..45ed51c 100755 --- a/version-lookup.sh +++ b/version-lookup.sh @@ -53,9 +53,6 @@ if [[ -z "${current_version:-}" ]] ; then semver) current_version="0.0.0" ;; - pep440) - current_version="0.0.0" - ;; calver) current_version="$(date '+%Y.%-m.0')" ;;