mirror of
https://github.com/reecetech/version-increment.git
synced 2025-12-21 14:35:44 +00:00
Compare commits
20 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ddbbe72b7f | ||
|
|
ba14b463c4 | ||
|
|
fde70f2da9 | ||
|
|
8b854651df | ||
|
|
40611bca96 | ||
|
|
ddfcb5bc04 | ||
|
|
3d00642def | ||
|
|
827489c005 | ||
|
|
ee28762c5b | ||
|
|
1c6699b17a | ||
|
|
822afeb70c | ||
|
|
9492ff84fb | ||
|
|
7c6e26cbd9 | ||
|
|
38a48eeef1 | ||
|
|
4988018178 | ||
|
|
3016172c72 | ||
|
|
a17b442bee | ||
|
|
406cc3a662 | ||
|
|
a7121378a5 | ||
|
|
f9aea6e594 |
4
.github/workflows/test-and-release.yml
vendored
4
.github/workflows/test-and-release.yml
vendored
@@ -29,7 +29,7 @@ jobs:
|
||||
- name: Setup bats
|
||||
uses: mig4/setup-bats@af9a00deb21b5d795cabfeaa8d9060410377686d
|
||||
with:
|
||||
bats-version: 1.2.1
|
||||
bats-version: 1.4.1
|
||||
|
||||
- name: Test
|
||||
run: bats tests/*.bats
|
||||
@@ -52,7 +52,7 @@ jobs:
|
||||
run: ./version-increment.sh
|
||||
env:
|
||||
current_version: ${{ steps.version-lookup.outputs.current-version }}
|
||||
INPUT_SCHEME: calver
|
||||
scheme: calver
|
||||
|
||||
- name: Release version
|
||||
uses: marvinpinto/action-automatic-releases@919008cf3f741b179569b7a6fb4d8860689ab7f0
|
||||
|
||||
15
README.md
15
README.md
@@ -5,8 +5,11 @@
|
||||
### ⌨️ Example
|
||||
|
||||
```yaml
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Get next version
|
||||
uses: reecetech/version-increment@2021.10.4
|
||||
uses: reecetech/version-increment@2022.2.4
|
||||
id: version
|
||||
with:
|
||||
scheme: semver
|
||||
@@ -81,8 +84,16 @@ Examples:
|
||||
|
||||
| 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 |
|
||||
| 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 |
|
||||
| major-version | Major number of the incremented version |
|
||||
| minor-version | Minor number of the incremented version |
|
||||
| patch-version | Patch number of the incremented version |
|
||||
| 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 |
|
||||
| patch-v-version | Patch number of the incremented version, prefixed with a `v` character |
|
||||
|
||||
## 💕 Contributing
|
||||
|
||||
|
||||
30
action.yml
30
action.yml
@@ -20,12 +20,36 @@ inputs:
|
||||
default: 'patch'
|
||||
|
||||
outputs:
|
||||
current_version:
|
||||
current-version:
|
||||
description: 'Current normal version detected'
|
||||
value: ${{ steps.version-lookup.outputs.current-version }}
|
||||
current-v-version:
|
||||
description: 'Current normal version detected, prefixed with a `v` charatcter'
|
||||
value: ${{ steps.version-lookup.outputs.current-v-version }}
|
||||
version:
|
||||
description: 'Incremented version calculated'
|
||||
value: ${{ steps.version-increment.outputs.version }}
|
||||
v-version:
|
||||
description: 'Incremented version calculated, prefixed with a `v` charatcter'
|
||||
value: ${{ steps.version-increment.outputs.v-version }}
|
||||
major-version:
|
||||
description: 'Major number of the incremented version'
|
||||
value: ${{ steps.version-increment.outputs.major-version }}
|
||||
minor-version:
|
||||
description: 'Minor number of the incremented version'
|
||||
value: ${{ steps.version-increment.outputs.minor-version }}
|
||||
patch-version:
|
||||
description: 'Patch number of the incremented version'
|
||||
value: ${{ steps.version-increment.outputs.patch-version }}
|
||||
major-v-version:
|
||||
description: 'Major number of the incremented version, prefixed with a `v` charatcter'
|
||||
value: ${{ steps.version-increment.outputs.major-v-version }}
|
||||
minor-v-version:
|
||||
description: 'Minor number of the incremented version, prefixed with a `v` charatcter'
|
||||
value: ${{ steps.version-increment.outputs.minor-v-version }}
|
||||
patch-v-version:
|
||||
description: 'Patch number of the incremented version, prefixed with a `v` charatcter'
|
||||
value: ${{ steps.version-increment.outputs.patch-v-version }}
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
@@ -33,9 +57,13 @@ runs:
|
||||
- id: version-lookup
|
||||
run: ${{ github.action_path }}/version-lookup.sh
|
||||
shell: bash
|
||||
env:
|
||||
scheme: ${{ inputs.scheme }}
|
||||
|
||||
- id: version-increment
|
||||
run: ${{ github.action_path }}/version-increment.sh
|
||||
shell: bash
|
||||
env:
|
||||
current_version: ${{ steps.version-lookup.outputs.current-version }}
|
||||
increment: ${{ inputs.increment }}
|
||||
scheme: ${{ inputs.scheme }}
|
||||
|
||||
@@ -15,7 +15,7 @@ pcre_old_calver='^(?P<major>0|[1-9]\d*)-0{0,1}(?P<minor>0|[0-9]\d*)-R(?P<patch>0
|
||||
## Input validation
|
||||
|
||||
input_errors='false'
|
||||
scheme="${INPUT_SCHEME:-semver}"
|
||||
scheme="${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'
|
||||
|
||||
@@ -44,7 +44,7 @@ function init_repo {
|
||||
@test "fails if invalid scheme given" {
|
||||
init_repo
|
||||
|
||||
export INPUT_SCHEME="foover"
|
||||
export scheme="foover"
|
||||
|
||||
run ../../version-increment.sh
|
||||
|
||||
@@ -56,7 +56,7 @@ function init_repo {
|
||||
@test "fails if invalid increment given" {
|
||||
init_repo
|
||||
|
||||
export INPUT_INCREMENT="critical"
|
||||
export increment="critical"
|
||||
|
||||
run ../../version-increment.sh
|
||||
|
||||
@@ -69,12 +69,15 @@ function init_repo {
|
||||
init_repo
|
||||
|
||||
export current_version=1.2.3
|
||||
export INPUT_INCREMENT="patch"
|
||||
export increment="patch"
|
||||
|
||||
run ../../version-increment.sh
|
||||
|
||||
print_run_info
|
||||
[ "$status" -eq 0 ] &&
|
||||
[[ "$output" = *"::set-output name=major-version::1"* ]] &&
|
||||
[[ "$output" = *"::set-output name=minor-version::2"* ]] &&
|
||||
[[ "$output" = *"::set-output name=patch-version::4"* ]] &&
|
||||
[[ "$output" = *"::set-output name=version::1.2.4"* ]]
|
||||
}
|
||||
|
||||
@@ -82,12 +85,15 @@ function init_repo {
|
||||
init_repo
|
||||
|
||||
export current_version=1.2.3
|
||||
export INPUT_INCREMENT="minor"
|
||||
export increment="minor"
|
||||
|
||||
run ../../version-increment.sh
|
||||
|
||||
print_run_info
|
||||
[ "$status" -eq 0 ] &&
|
||||
[[ "$output" = *"::set-output name=major-version::1"* ]] &&
|
||||
[[ "$output" = *"::set-output name=minor-version::3"* ]] &&
|
||||
[[ "$output" = *"::set-output name=patch-version::0"* ]] &&
|
||||
[[ "$output" = *"::set-output name=version::1.3.0"* ]]
|
||||
}
|
||||
|
||||
@@ -95,20 +101,40 @@ function init_repo {
|
||||
init_repo
|
||||
|
||||
export current_version=1.2.3
|
||||
export INPUT_INCREMENT="major"
|
||||
export increment="major"
|
||||
|
||||
run ../../version-increment.sh
|
||||
|
||||
print_run_info
|
||||
[ "$status" -eq 0 ] &&
|
||||
[[ "$output" = *"::set-output name=major-version::2"* ]] &&
|
||||
[[ "$output" = *"::set-output name=minor-version::0"* ]] &&
|
||||
[[ "$output" = *"::set-output name=patch-version::0"* ]] &&
|
||||
[[ "$output" = *"::set-output name=version::2.0.0"* ]]
|
||||
}
|
||||
|
||||
@test "prefixes with v" {
|
||||
init_repo
|
||||
|
||||
export current_version=1.2.3
|
||||
export increment="major"
|
||||
|
||||
run ../../version-increment.sh
|
||||
|
||||
print_run_info
|
||||
[ "$status" -eq 0 ] &&
|
||||
[[ "$output" = *"::set-output name=version::2.0.0"* ]] &&
|
||||
[[ "$output" = *"::set-output name=major-v-version::v2"* ]] &&
|
||||
[[ "$output" = *"::set-output name=minor-v-version::v0"* ]] &&
|
||||
[[ "$output" = *"::set-output name=patch-v-version::v0"* ]] &&
|
||||
[[ "$output" = *"::set-output name=v-version::v2.0.0"* ]]
|
||||
}
|
||||
|
||||
@test "increments to a new month (calver)" {
|
||||
init_repo
|
||||
|
||||
export current_version=2020.6.4
|
||||
export INPUT_SCHEME="calver"
|
||||
export scheme="calver"
|
||||
|
||||
run ../../version-increment.sh
|
||||
|
||||
@@ -121,7 +147,7 @@ function init_repo {
|
||||
init_repo
|
||||
|
||||
export current_version="$(date +%Y.%-m.123)"
|
||||
export INPUT_SCHEME="calver"
|
||||
export scheme="calver"
|
||||
|
||||
run ../../version-increment.sh
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ function init_repo {
|
||||
@test "fails if invalid scheme given" {
|
||||
init_repo
|
||||
|
||||
export INPUT_SCHEME="foover"
|
||||
export scheme="foover"
|
||||
|
||||
run ../../version-lookup.sh
|
||||
|
||||
@@ -43,6 +43,19 @@ function init_repo {
|
||||
[[ "$output" = *"::set-output name=current-version::0.1.2"* ]]
|
||||
}
|
||||
|
||||
@test "prefixes with a v" {
|
||||
init_repo
|
||||
|
||||
git tag 0.1.2
|
||||
|
||||
run ../../version-lookup.sh
|
||||
|
||||
print_run_info
|
||||
[ "$status" -eq 0 ] &&
|
||||
[[ "$output" = *"::set-output name=current-version::0.1.2"* ]] &&
|
||||
[[ "$output" = *"::set-output name=current-v-version::v0.1.2"* ]]
|
||||
}
|
||||
|
||||
@test "finds the current normal version even if there's a newer pre-release version" {
|
||||
init_repo
|
||||
|
||||
@@ -81,7 +94,7 @@ function init_repo {
|
||||
@test "returns a calver if no normal version detected and calver scheme specified" {
|
||||
init_repo
|
||||
|
||||
export INPUT_SCHEME="calver"
|
||||
export scheme="calver"
|
||||
|
||||
run ../../version-lookup.sh
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||
# shellcheck source=shared.sh
|
||||
source "${script_dir}/shared.sh"
|
||||
|
||||
increment="${INPUT_INCREMENT:-patch}"
|
||||
increment="${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
|
||||
input_errors='true'
|
||||
@@ -87,3 +87,10 @@ fi
|
||||
echo "ℹ️ The new version is ${new_version}"
|
||||
|
||||
echo "::set-output name=version::${new_version}"
|
||||
echo "::set-output name=v-version::v${new_version}"
|
||||
echo "::set-output name=major-version::${version_array[0]}"
|
||||
echo "::set-output name=minor-version::${version_array[1]}"
|
||||
echo "::set-output name=patch-version::${version_array[2]}"
|
||||
echo "::set-output name=major-v-version::v${version_array[0]}"
|
||||
echo "::set-output name=minor-v-version::v${version_array[1]}"
|
||||
echo "::set-output name=patch-v-version::v${version_array[2]}"
|
||||
|
||||
@@ -34,11 +34,11 @@ fi
|
||||
## Version parsing
|
||||
|
||||
# detect current version - removing "v" from start of tag if it exists
|
||||
current_version="$(git tag -l | { ${grep} -P "${pcre_allow_vprefix}" || true; } | sed 's/^v//g' | sort -V --reverse | head -n1)"
|
||||
current_version="$(git tag -l | { ${grep} -P "${pcre_allow_vprefix}" || true; } | sed 's/^v//g' | sort -V | tail -n 1)"
|
||||
|
||||
# support transition from an old reecetech calver style (yyyy-mm-Rr, where R is the literal `R`, and r is the nth release for the month)
|
||||
if [[ -z "${current_version:-}" ]] ; then
|
||||
current_version="$(git tag -l | { ${grep} -P "${pcre_old_calver}" || true; } | sort -V --reverse | head -n1)"
|
||||
current_version="$(git tag -l | { ${grep} -P "${pcre_old_calver}" || true; } | sort -V | tail -n 1)"
|
||||
if [[ -n "${current_version:-}" ]] ; then
|
||||
# convert - to . and drop leading zeros & the R
|
||||
current_version="$(echo "${current_version}" | sed -r 's/^([0-9]+)-0{0,1}([0-9]+)-R0{0,1}([0-9]+)$/\1.\2.\3/')"
|
||||
@@ -62,3 +62,4 @@ fi
|
||||
echo "ℹ️ The current normal version is ${current_version}"
|
||||
|
||||
echo "::set-output name=current-version::${current_version}"
|
||||
echo "::set-output name=current-v-version::v${current_version}"
|
||||
|
||||
Reference in New Issue
Block a user