7 Commits

Author SHA1 Message Date
Philip Jay
c0c7194013 Merge pull request #5 from reecetech/rework
Rework for slightly better input validation
2021-10-22 07:35:13 +11:00
Phil Jay
a54c16bb35 Rework for slightly better code style 2021-10-21 23:38:59 +11:00
Philip Jay
8766e6c6af Merge pull request #4 from reecetech/fixup-for-env
Fix for `env`, fix for README
2021-10-20 13:54:55 +11:00
Phil Jay
8700256121 Fix: composite runs using bash require env 2021-10-20 12:11:22 +11:00
Phil Jay
2fa6f4f0f9 Update to show version 2021-10-20 12:07:00 +11:00
Philip Jay
ef5bc12fc4 Merge pull request #2 from reecetech/fixup-action.yml
Fix metadata syntax in `action.yml` 🛠
2021-10-20 11:40:15 +11:00
Phil Jay
efc89dc7d0 Fix metadata syntax in action.yml 🛠
```
Description must be less than 125 characters.
```
2021-10-20 11:31:17 +11:00
7 changed files with 34 additions and 30 deletions

View File

@@ -6,7 +6,7 @@
```yaml ```yaml
- name: Get next version - name: Get next version
uses: reecetech/version-increment uses: reecetech/version-increment@2021.10.4
id: version id: version
with: with:
scheme: semver scheme: semver

View File

@@ -1,11 +1,10 @@
--- ---
name: 'Version Increment' name: 'Version Increment'
description: | description: Inspects the git tags to determine the current normal version, and returns the next version number
Inspects the git tags to determine the current normal version, and returns the
next version number.
A normal version will be returned if the branch is the default branch branding:
(usually `main`), otherwise a pre-release version will be returned. icon: plus
color: purple
inputs: inputs:
scheme: scheme:
@@ -38,5 +37,5 @@ runs:
- id: version-increment - id: version-increment
run: ${{ github.action_path }}/version-increment.sh run: ${{ github.action_path }}/version-increment.sh
shell: bash shell: bash
with: env:
current_version: ${{ steps.version-lookup.outputs.current-version }} current_version: ${{ steps.version-lookup.outputs.current-version }}

View File

@@ -2,12 +2,25 @@
# shellcheck disable=SC2034 # shellcheck disable=SC2034
set -euo pipefail 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='^(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?: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<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$' pcre_semver='^(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?: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<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$'
pcre_master_ver='^(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)$' pcre_master_ver='^(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)$'
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*)$'
##==----------------------------------------------------------------------------
## 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 ## MacOS compatibility - for local testing

View File

@@ -25,7 +25,7 @@ function init_repo {
run ../../version-increment.sh run ../../version-increment.sh
print_run_info print_run_info
[ "$status" -eq 5 ] && [ "$status" -eq 8 ] &&
[[ "$output" = *"Environment variable 'current_version' is unset or empty"* ]] [[ "$output" = *"Environment variable 'current_version' is unset or empty"* ]]
} }
@@ -37,14 +37,13 @@ function init_repo {
run ../../version-increment.sh run ../../version-increment.sh
print_run_info print_run_info
[ "$status" -eq 6 ] && [ "$status" -eq 8 ] &&
[[ "$output" = *"Environment variable 'current_version' is not a valid normal version"* ]] [[ "$output" = *"Environment variable 'current_version' is not a valid normal version"* ]]
} }
@test "fails if invalid scheme given" { @test "fails if invalid scheme given" {
init_repo init_repo
export current_version=1.2.3
export INPUT_SCHEME="foover" export INPUT_SCHEME="foover"
run ../../version-increment.sh run ../../version-increment.sh
@@ -57,13 +56,12 @@ function init_repo {
@test "fails if invalid increment given" { @test "fails if invalid increment given" {
init_repo init_repo
export current_version=1.2.3
export INPUT_INCREMENT="critical" export INPUT_INCREMENT="critical"
run ../../version-increment.sh run ../../version-increment.sh
print_run_info print_run_info
[ "$status" -eq 7 ] && [ "$status" -eq 8 ] &&
[[ "$output" = *"Value of 'increment' is not valid, choose from 'major', 'minor', or 'patch'"* ]] [[ "$output" = *"Value of 'increment' is not valid, choose from 'major', 'minor', or 'patch'"* ]]
} }

View File

@@ -6,25 +6,21 @@ script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "${script_dir}/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}" increment="${INPUT_INCREMENT:-patch}"
if [[ "${increment}" != 'patch' && "${increment}" != 'minor' && "${increment}" != 'major' ]] ; then if [[ "${increment}" != 'patch' && "${increment}" != 'minor' && "${increment}" != 'major' ]] ; then
echo "🛑 Value of 'increment' is not valid, choose from 'major', 'minor', or 'patch'" 1>&2 echo "🛑 Value of 'increment' is not valid, choose from 'major', 'minor', or 'patch'" 1>&2
exit 7 input_errors='true'
fi fi
scheme="${INPUT_SCHEME:-semver}" if [[ -z "${current_version:-}" ]] ; then
if [[ "${scheme}" != 'semver' && "${scheme}" != 'calver' ]] ; then echo "🛑 Environment variable 'current_version' is unset or empty" 1>&2
echo "🛑 Value of 'scheme' is not valid, choose from 'semver' or 'calver'" 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 exit 8
fi fi

View File

@@ -6,9 +6,7 @@ script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
# shellcheck source=shared.sh # shellcheck source=shared.sh
source "${script_dir}/shared.sh" source "${script_dir}/shared.sh"
scheme="${INPUT_SCHEME:-semver}" if [[ "${input_errors}" == 'true' ]] ; then
if [[ "${scheme}" != 'semver' && "${scheme}" != 'calver' ]] ; then
echo "🛑 Value of 'scheme' is not valid, choose from 'semver' or 'calver'" 1>&2
exit 8 exit 8
fi fi