36 Commits

Author SHA1 Message Date
Phil Jay
a29aa752dc Merge pull request #41 from reecetech/fixup
Fix: wrong version variable
2024-10-14 06:23:01 +11:00
Phil Jay
f1dfe8f5a1 Update README for new version 2024-10-11 16:20:18 +11:00
Phil Jay
feaac9b904 Fix: wrong version variable 2024-10-11 16:19:40 +11:00
Phil Jay
36b965a12f Merge pull request #40 from reecetech/workflow-tweek
Update test-and-release.yml
2024-10-11 15:50:11 +11:00
Phil Jay
9a52af87bc Update test-and-release.yml
Use `v2` of `action-gh-release`

Use action directly instead of using the scripts to provide a more direct example of use
2024-10-10 18:26:44 +11:00
George Kolecsanyi
a5d65984a6 Merge pull request #38 from reecetech/fix-when-no-prefix
set prefix tag default to empty string
2024-09-03 12:30:23 +10:00
George Kolecsanyi
39ac246d0c set prefix tag default to empty string 2024-09-03 12:22:17 +10:00
Phil Jay
2ec19615c5 Merge pull request #37 from reecetech/fix-test
Fix test for when on `main` branch
2024-09-02 10:58:36 +10:00
Phil Jay
95aaf0c0e9 Fix test for when on main branch 2024-09-02 10:55:20 +10:00
Phil Jay
a67b798a79 Merge pull request #36 from reecetech/fix-lint
Fix lint & create new release
2024-09-02 08:02:15 +10:00
Phil Jay
9791034c7c Improve + fix test 2024-08-31 16:08:37 +10:00
Phil Jay
233fed58a9 Fix lint; Add comment 2024-08-31 15:51:39 +10:00
Phil Jay
dbf9c566cb Merge pull request #35 from sefasenturk95/main
Update version look up to support tags prepended with a prefix
2024-08-31 14:50:53 +10:00
Phil Jay
0f298121cd Update README 2024-08-31 14:49:15 +10:00
Phil Jay
5af72f0ae1 Introduce new outputs 2024-08-31 14:38:32 +10:00
Phil Jay
836a0f07bb Fix tests; Pre-filter tags 2024-08-31 14:19:37 +10:00
Phil Jay
d4496413d6 Don't auto-add @ to prefix; Shift utility function 2024-08-31 13:49:15 +10:00
Phil Jay
aa4572b10f Add test to see that versions only with tag_prefix are returned 2024-08-31 13:28:20 +10:00
Sefa Şentürk
56f4a516dd Update action to support with tag_prefix parameter 2024-08-30 11:08:56 +02:00
Phil Jay
c1faa9d742 Merge pull request #33 from reecetech/bats
Switch to maintained `bats-action`; update to latest BATS version (v1.11.0)
2024-04-24 15:31:30 +10:00
Phil Jay
ca62a5d18e Update to latest BATS 2024-04-24 12:45:43 +10:00
Phil Jay
f149a06e08 Switch to bats-core/bats-action
Is maintained, and uses up to date node (v20)
2024-04-24 12:44:19 +10:00
Phil Jay
dee3ec8905 Merge pull request #30 from b0bben/action-path-lookup-windows
Add Windows runners compatibility
2024-04-24 12:37:10 +10:00
Phil Jay
8df12f2eb1 Update README 2024-04-24 12:35:10 +10:00
Phil Jay
16351e1923 Update to use brace variable referencing
https://stackoverflow.com/a/8748880
2024-04-24 12:28:33 +10:00
Phil Jay
512aaef59f Fix: file location after rework of tests 2024-04-24 12:25:14 +10:00
Phil Jay
238431148e 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
2024-04-24 12:25:14 +10:00
Phil Jay
192637163e Enable testing on Windows 2024-04-24 12:12:29 +10:00
Bob Jelica
b51c517604 Force utf8 for all commands during execution 2024-04-24 12:12:04 +10:00
Bob Jelica
3165846543 Force utf8 before grepping 2024-04-24 12:09:02 +10:00
Bob Jelica
f16cac75c5 Try forcing locale for grep 2024-04-24 12:02:38 +10:00
Bob Jelica
d4ed669f7f Fix other test + add more debugging for windows 2024-04-24 12:01:04 +10:00
Bob Jelica
a121e1106e Fix tests 2024-04-24 12:01:04 +10:00
Bob Jelica
0483a06d99 Set starting patch number to '1' since increment doesn't work with 0s 2024-04-24 12:01:04 +10:00
Bob Jelica
a6b9cc8234 Fix 2nd location with path as well 2024-04-24 12:01:04 +10:00
Bob Jelica
2055d25933 Lookup action path in a Windows-friendly way 2024-04-24 12:01:04 +10:00
7 changed files with 227 additions and 60 deletions

View File

@@ -27,9 +27,9 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Setup bats - name: Setup bats
uses: mig4/setup-bats@af9a00deb21b5d795cabfeaa8d9060410377686d # v1.2.0 uses: bats-core/bats-action@2.0.0
with: with:
bats-version: 1.8.0 bats-version: 1.11.0
- name: Test - name: Test
run: bats tests/*.bats run: bats tests/*.bats
@@ -77,8 +77,8 @@ jobs:
os: os:
- macos-latest - macos-latest
- ubuntu-latest - ubuntu-latest
# - windows-latest -- coming soon, https://github.com/reecetech/version-increment/pull/30 - windows-latest
fail-fast: true fail-fast: false
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- name: Checkout code # have to checkout to have the source code available - name: Checkout code # have to checkout to have the source code available
@@ -114,6 +114,23 @@ jobs:
[[ "${{ steps.version-via-api.outputs.patch-version }}" == "${{ steps.version-via-git.outputs.patch-version }}" ]] [[ "${{ steps.version-via-api.outputs.patch-version }}" == "${{ steps.version-via-git.outputs.patch-version }}" ]]
# Don't test the full version or pre-version, since the number of digits is likely to be different (9 via api vs. 7 via git) # Don't test the full version or pre-version, since the number of digits is likely to be different (9 via api vs. 7 via git)
- name: Get next version via Git with tag-prefix
uses: ./
id: version-prefix
with:
scheme: 'semver'
use_api: false
tag_prefix: 'foo/bar@'
- name: Check that it starts from 0.0.1 (since prefix doesn't exist)
shell: bash
run: |
[[ "${{ steps.version-prefix.outputs.current-version }}" == "0.0.0" ]]
[[ "${{ steps.version-prefix.outputs.major-version }}" == "0" ]]
[[ "${{ steps.version-prefix.outputs.minor-version }}" == "0" ]]
[[ "${{ steps.version-prefix.outputs.patch-version }}" == "1" ]]
[[ "${{ steps.version-prefix.outputs.prefixed-version }}" = "foo/bar@0.0.1"* ]]
release: release:
needs: needs:
- test-action-yml - test-action-yml
@@ -122,21 +139,16 @@ jobs:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Lookup version - name: Get next version
id: version-lookup uses: ./
run: ./version-lookup.sh id: version
with:
- name: Increment version scheme: 'calver'
id: version-increment
run: ./version-increment.sh
env:
current_version: ${{ steps.version-lookup.outputs.CURRENT_VERSION }}
scheme: calver
- name: Release version - name: Release version
uses: softprops/action-gh-release@v1 uses: softprops/action-gh-release@v2
if: ${{ github.ref_name == github.event.repository.default_branch }} if: ${{ github.ref_name == github.event.repository.default_branch }}
with: with:
draft: false draft: false
prerelease: false prerelease: false
tag_name: "${{ steps.version-increment.outputs.VERSION }}" tag_name: "${{ steps.version.outputs.version }}"

View File

@@ -2,6 +2,10 @@
## Use 📄 ## 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 ⌨️ ### Example ⌨️
```yaml ```yaml
@@ -9,7 +13,7 @@
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Get next version - name: Get next version
uses: reecetech/version-increment@2023.9.3 uses: reecetech/version-increment@2024.10.1
id: version id: version
with: with:
scheme: semver scheme: semver
@@ -30,7 +34,7 @@ use the API mode:
```yaml ```yaml
- name: Get next version - name: Get next version
uses: reecetech/version-increment@2024.4.1 uses: reecetech/version-increment@2024.10.1
id: version id: version
with: with:
use_api: true use_api: true
@@ -128,22 +132,25 @@ Examples:
| increment | The digit to increment, either `major`, `minor` or `patch`, ignored if `scheme` == `calver` | No | `patch` | | increment | The digit to increment, either `major`, `minor` or `patch`, ignored if `scheme` == `calver` | No | `patch` |
| release_branch | Specify a non-default branch to use for the release tag (the one without -pre) | No | | | release_branch | Specify a non-default branch to use for the release tag (the one without -pre) | No | |
| use_api | Use the GitHub API to discover current tags, which avoids the need for a git checkout, but requires `curl` and `jq` | No | `false` | | use_api | Use the GitHub API to discover current tags, which avoids the need for a git checkout, but requires `curl` and `jq` | No | `false` |
| tag_prefix | Prefix the tag with a string (defaults to empty string). e.g. if set to `@org/product/` the action will filter by this prefix and return `@org/product/1.2.3` in `prefixed-version` output | No | |
### Outputs 📤 ### Outputs 📤
| name | description | | name | description |
| :--- | :--- | | :--- | :--- |
| current-version | The current latest version detected from the git repositories tags | | current-version | The current latest version detected from the git repositories tags |
| current-v-version | The current latest version detected from the git repositories tags, prefixed with a `v` character | | current-v-version | The current latest version detected from the git repositories tags, prefixed with a `v` character |
| version | The incremented version number (e.g. the next version) | | version | The incremented version number (e.g. the next version) |
| v-version | The incremented version number (e.g. the next version), prefixed with a `v` character | | v-version | The incremented version number (e.g. the next version), prefixed with a `v` character |
| major-version | Major number of the incremented version | | major-version | Major number of the incremented version |
| minor-version | Minor number of the incremented version | | minor-version | Minor number of the incremented version |
| patch-version | Patch number of the incremented version | | patch-version | Patch number of the incremented version |
| pre-release-label | Pre-release label of the incremented version | | pre-release-label | Pre-release label of the incremented version |
| major-v-version | Major number of the incremented version, prefixed with a `v` character | | major-v-version | Major number of the incremented version, prefixed with a `v` character |
| minor-v-version | Minor number of the incremented version, prefixed with a `v` character | | minor-v-version | Minor number of the incremented version, prefixed with a `v` character |
| patch-v-version | Patch number of the incremented version, prefixed with a `v` character | | patch-v-version | Patch number of the incremented version, prefixed with a `v` character |
| prefixed-version | Incremented version calculated, including a `tag_prefix` if specified |
| prefixed-v-version | Incremented version calculated, prefixed with a `v` charatcter, and also including a `tag_prefix` if specified |
## Contributing 💕 ## Contributing 💕

View File

@@ -40,6 +40,11 @@ inputs:
description: 'Use the GitHub API to discover current tags, which avoids the need for a git checkout, but requires `curl` and `jq`' description: 'Use the GitHub API to discover current tags, which avoids the need for a git checkout, but requires `curl` and `jq`'
required: false required: false
default: false default: false
tag_prefix:
description: |
Prefix the tag with a string (defaults to empty string). e.g. if set to `@org/product/` the action will filter by this prefix and return `@org/product/1.2.3` in `prefixed-version` output
required: false
default: ''
outputs: outputs:
current-version: current-version:
@@ -75,20 +80,27 @@ outputs:
patch-v-version: patch-v-version:
description: 'Patch number of the incremented version, prefixed with a `v` charatcter' description: 'Patch number of the incremented version, prefixed with a `v` charatcter'
value: ${{ steps.version-increment.outputs.PATCH_V_VERSION }} value: ${{ steps.version-increment.outputs.PATCH_V_VERSION }}
prefixed-version:
description: 'Incremented version calculated, including a `tag_prefix` if specified'
value: ${{ inputs.tag_prefix}}${{ steps.version-increment.outputs.VERSION }}
prefixed-v-version:
description: 'Incremented version calculated, prefixed with a `v` charatcter, and also including a `tag_prefix` if specified'
value: ${{ inputs.tag_prefix}}${{ steps.version-increment.outputs.V_VERSION }}
runs: runs:
using: "composite" using: "composite"
steps: steps:
- id: version-lookup - id: version-lookup
run: ${{ github.action_path }}/version-lookup.sh run: "${GITHUB_ACTION_PATH}/version-lookup.sh"
shell: bash shell: bash
env: env:
github_token: ${{ github.token }} github_token: ${{ github.token }}
scheme: ${{ inputs.scheme }} scheme: ${{ inputs.scheme }}
use_api: ${{ inputs.use_api }} use_api: ${{ inputs.use_api }}
tag_prefix: ${{ inputs.tag_prefix }}
- id: version-increment - id: version-increment
run: ${{ github.action_path }}/version-increment.sh run: "${GITHUB_ACTION_PATH}/version-increment.sh"
shell: bash shell: bash
env: env:
current_version: ${{ steps.version-lookup.outputs.CURRENT_VERSION }} current_version: ${{ steps.version-lookup.outputs.CURRENT_VERSION }}

View File

@@ -2,6 +2,9 @@
# shellcheck disable=SC2034 # shellcheck disable=SC2034
set -euo pipefail set -euo pipefail
# Force UTF-8 for all commands, for Git-Bash on Windows compatibility
export LC_ALL=C.UTF-8
##==---------------------------------------------------------------------------- ##==----------------------------------------------------------------------------
## SemVer regexes ## SemVer regexes
## see: https://semver.org/spec/v2.0.0.html#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string ## see: https://semver.org/spec/v2.0.0.html#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
@@ -11,6 +14,28 @@ pcre_master_ver='^(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9
pcre_allow_vprefix="^v{0,1}${pcre_master_ver:1}" pcre_allow_vprefix="^v{0,1}${pcre_master_ver:1}"
pcre_old_calver='^(?P<major>0|[1-9]\d*)-0{0,1}(?P<minor>0|[0-9]\d*)-R(?P<patch>0|[1-9]\d*)$' pcre_old_calver='^(?P<major>0|[1-9]\d*)-0{0,1}(?P<minor>0|[0-9]\d*)-R(?P<patch>0|[1-9]\d*)$'
##==----------------------------------------------------------------------------
## Utility function for removing tag_prefix if present
remove_prefix() {
local tag="$1"
if [[ -n "${tag_prefix:-}" ]]; then
# Escape special characters in tag_prefix
local escaped_prefix
escaped_prefix=$(printf '%s\n' "$tag_prefix" | sed 's/[][\/.^$*]/\\&/g') # special chars matched by sed: ] [ / . ^ $ *
# shellcheck disable=SC2143
if [[ -z "$(echo "${tag}" | grep "^${tag_prefix}")" ]] ; then
echo ""
return
fi
# shellcheck disable=SC2001
echo "${tag}" | sed "s|^${escaped_prefix}||" # Use | as the delimiter to avoid conflicts with /
else
echo "${tag}"
fi
}
##==---------------------------------------------------------------------------- ##==----------------------------------------------------------------------------
## Conventional commit regexes ## Conventional commit regexes
## see: https://www.conventionalcommits.org/en/v1.0.0/ ## see: https://www.conventionalcommits.org/en/v1.0.0/
@@ -48,6 +73,9 @@ if [[ "${use_api}" == 'true' ]] ; then
fi fi
fi fi
# Check if the tag_prefix is set, and if not, set it to an empty string
tag_prefix="${tag_prefix:-}"
##==---------------------------------------------------------------------------- ##==----------------------------------------------------------------------------
## MacOS compatibility ## MacOS compatibility

View File

@@ -1,6 +1,15 @@
#!/usr/bin/env bats #!/usr/bin/env bats
# vim: set ft=sh sw=4 : # 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 load helper_print-info
export repo=".tmp_testing/repo" export repo=".tmp_testing/repo"
@@ -22,7 +31,7 @@ function init_repo {
@test "fails if no current_version given" { @test "fails if no current_version given" {
init_repo init_repo
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 8 ] && [ "$status" -eq 8 ] &&
@@ -34,7 +43,7 @@ function init_repo {
export current_version=1.3.5-prerelease export current_version=1.3.5-prerelease
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 8 ] && [ "$status" -eq 8 ] &&
@@ -46,7 +55,7 @@ function init_repo {
export scheme="foover" export scheme="foover"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 8 ] && [ "$status" -eq 8 ] &&
@@ -58,7 +67,7 @@ function init_repo {
export pep440="yes" export pep440="yes"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 8 ] && [ "$status" -eq 8 ] &&
@@ -70,7 +79,7 @@ function init_repo {
export increment="critical" export increment="critical"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 8 ] && [ "$status" -eq 8 ] &&
@@ -90,7 +99,7 @@ function init_repo {
export current_version=1.2.3 export current_version=1.2.3
export increment="patch" export increment="patch"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -106,7 +115,7 @@ function init_repo {
export current_version=1.2.3 export current_version=1.2.3
export increment="minor" export increment="minor"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -123,7 +132,7 @@ function init_repo {
export pep404="false" export pep404="false"
export increment="minor" export increment="minor"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -139,7 +148,7 @@ function init_repo {
export current_version=1.2.3 export current_version=1.2.3
export increment="major" export increment="major"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -156,7 +165,7 @@ function init_repo {
export pep404="true" export pep404="true"
export increment="major" export increment="major"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -172,7 +181,7 @@ function init_repo {
export current_version=1.2.3 export current_version=1.2.3
export increment="major" export increment="major"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -189,7 +198,7 @@ function init_repo {
export current_version=2020.6.4 export current_version=2020.6.4
export scheme="calver" export scheme="calver"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -202,7 +211,7 @@ function init_repo {
export current_version="$(date +%Y.%-m.123)" export current_version="$(date +%Y.%-m.123)"
export scheme="calver" export scheme="calver"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -216,7 +225,7 @@ function init_repo {
export GITHUB_REF="refs/heads/super-awesome-feature" export GITHUB_REF="refs/heads/super-awesome-feature"
export short_ref="$(git rev-parse --short HEAD | sed 's/0*//')" export short_ref="$(git rev-parse --short HEAD | sed 's/0*//')"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -231,7 +240,7 @@ function init_repo {
export GITHUB_REF="refs/heads/releases" export GITHUB_REF="refs/heads/releases"
export release_branch="releases" export release_branch="releases"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -248,7 +257,7 @@ function init_repo {
export GITHUB_REF="refs/heads/super-awesome-python" export GITHUB_REF="refs/heads/super-awesome-python"
export short_ref="$(git rev-parse --short HEAD | sed 's/0*//')" export short_ref="$(git rev-parse --short HEAD | sed 's/0*//')"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -265,7 +274,7 @@ function init_repo {
export GITHUB_REF="refs/heads/super-awesome-python" export GITHUB_REF="refs/heads/super-awesome-python"
export short_ref="$(git rev-parse --short HEAD | sed 's/0*//')" export short_ref="$(git rev-parse --short HEAD | sed 's/0*//')"
run ../../version-increment.sh run version-increment.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -400,3 +409,24 @@ function init_repo {
[[ "$output" = *"VERSION=1.2.4"* ]] [[ "$output" = *"VERSION=1.2.4"* ]]
[[ "$output" = *"No conventional commit found"* ]] [[ "$output" = *"No conventional commit found"* ]]
} }
@test "increments the patch version by default if no conventional commits found and enabled (conventional commits) (with tag_prefix)" {
init_repo
export tag_prefix="@org/product@"
export current_version="1.2.3"
export scheme="conventional_commits"
echo "some new change" > feat.txt
git add feat.txt
git commit -m "new change"
run ../../version-increment.sh
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"VERSION=1.2.4"* ]]
[[ "$output" = *"V_VERSION=v1.2.4"* ]]
[[ "$output" = *"No conventional commit found"* ]]
}

View File

@@ -5,6 +5,15 @@ load helper_print-info
export repo=".tmp_testing/repo" 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 { function init_repo {
rm -rf "${repo}" && rm -rf "${repo}" &&
mkdir -p "${repo}" && mkdir -p "${repo}" &&
@@ -22,7 +31,7 @@ function init_repo {
export scheme="foover" export scheme="foover"
run ../../version-lookup.sh run version-lookup.sh
print_run_info print_run_info
[ "$status" -eq 8 ] && [ "$status" -eq 8 ] &&
@@ -43,7 +52,7 @@ function init_repo {
git tag 0.1.1 git tag 0.1.1
git tag 0.1.2 git tag 0.1.2
run ../../version-lookup.sh run version-lookup.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -55,7 +64,38 @@ function init_repo {
git tag 0.1.2 git tag 0.1.2
run ../../version-lookup.sh run version-lookup.sh
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"CURRENT_VERSION=0.1.2"* ]] &&
[[ "$output" = *"CURRENT_V_VERSION=v0.1.2"* ]]
}
@test "finds the current normal version with tag_prefix enabled" {
init_repo
export tag_prefix="@org/product@"
git tag @org/product@0.0.1
git tag @org/product@0.1.1
git tag @org/product@0.1.2
run version-lookup.sh
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"CURRENT_VERSION=0.1.2"* ]]
}
@test "tag_prefix enabled prefixes with a v" {
init_repo
export tag_prefix="@org/product/"
git tag @org/product/0.1.2
run version-lookup.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -69,17 +109,35 @@ function init_repo {
git tag 1.2.300 git tag 1.2.300
git tag 1.2.301-dev.234 git tag 1.2.301-dev.234
run ../../version-lookup.sh run version-lookup.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
[[ "$output" = *"CURRENT_VERSION=1.2.300"* ]] [[ "$output" = *"CURRENT_VERSION=1.2.300"* ]]
} }
@test "finds only prefixed tags when tag_prefix set" {
init_repo
export tag_prefix="my_product-"
git tag my_product-0.1.2
git tag my_product-0.1.3-dev.123
git tag 2.4.5
git tag 2.4.6-dev.456
run version-lookup.sh
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"CURRENT_VERSION=0.1.2"* ]] &&
[[ "$output" = *"CURRENT_V_VERSION=v0.1.2"* ]]
}
@test "returns 0.0.0 if no normal version detected" { @test "returns 0.0.0 if no normal version detected" {
init_repo init_repo
run ../../version-lookup.sh run version-lookup.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -91,7 +149,21 @@ function init_repo {
git tag 0.0.1-dev.999 git tag 0.0.1-dev.999
run ../../version-lookup.sh run version-lookup.sh
print_run_info
[ "$status" -eq 0 ] &&
[[ "$output" = *"CURRENT_VERSION=0.0.0"* ]]
}
@test "returns 0.0.0 if no prefix version detected even if there's a non-prefix release version" {
init_repo
export tag_prefix="code/"
git tag 0.1.0
run version-lookup.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -103,7 +175,7 @@ function init_repo {
export scheme="calver" export scheme="calver"
run ../../version-lookup.sh run version-lookup.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&
@@ -115,7 +187,7 @@ function init_repo {
git tag v3.4.5 git tag v3.4.5
run ../../version-lookup.sh run version-lookup.sh
print_run_info print_run_info
[ "$status" -eq 0 ] && [ "$status" -eq 0 ] &&

View File

@@ -32,12 +32,18 @@ if [[ "${use_api:-}" == 'true' ]] ; then
-H "X-GitHub-Api-Version: 2022-11-28" \ -H "X-GitHub-Api-Version: 2022-11-28" \
"${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/git/matching-refs/tags/" \ "${GITHUB_API_URL}/repos/${GITHUB_REPOSITORY}/git/matching-refs/tags/" \
| jq -r '.[].ref' | sed 's|refs/tags/||g' \ | jq -r '.[].ref' | sed 's|refs/tags/||g' \
| { grep_p "${pcre_allow_vprefix}" || true; } | sed 's/^v//g' | sort -V | tail -n 1 | while read -r tag; do remove_prefix "$tag"; done \
| { grep_p "${pcre_allow_vprefix}" || true; } \
| sed 's/^v//g' \
| sort -V | tail -n 1
)" )"
else else
current_version="$( current_version="$(
git tag -l \ git tag -l \
| { grep_p "${pcre_allow_vprefix}" || true; } | sed 's/^v//g' | sort -V | tail -n 1 | while read -r tag; do remove_prefix "$tag"; done \
| { grep_p "${pcre_allow_vprefix}" || true; } \
| sed 's/^v//g' \
| sort -V | tail -n 1
)" )"
fi fi