From e8ec7867f12f787dc28452b6f5b02fa7a4616c2d Mon Sep 17 00:00:00 2001 From: Madhura Bhave Date: Mon, 26 Feb 2018 14:27:26 -0800 Subject: [PATCH] Add get_next_release --- README.adoc | 13 +++++++++++++ concourse-java.sh | 15 +++++++++++++++ test/get_next_release.bats | 13 +++++++++++++ 3 files changed, 41 insertions(+) diff --git a/README.adoc b/README.adoc index 490e327..3b133d8 100644 --- a/README.adoc +++ b/README.adoc @@ -206,6 +206,19 @@ version=$( strip_snapshot_suffix "1.2.3-SNAPSHOT" ) version=$( strip_snapshot_suffix "1.2.3.BUILD-SNAPSHOT" ) ---- +==== get_next_release +Get the release version based on a given snapshot version. + +The following call will set `next` to `1.0.0.RELEASE`. + +[source,bash] +---- +next=$( get_next_milestone_release "1.0.0.BUILD-SNAPSHOT") +---- + +TIP: Version numbers in the form `1.0.0-SNAPSHOT` and `1.0.0.BUILD-SNAPSHOT` are both supported + + ==== get_next_milestone_release / get_next_rc_release Get the next milestone or release candidate version based on a given version and existing git tags. These methods allow preview releases to be published, without needing to directly store the release number. diff --git a/concourse-java.sh b/concourse-java.sh index 3ac2aa7..b0e58f8 100644 --- a/concourse-java.sh +++ b/concourse-java.sh @@ -55,6 +55,21 @@ set_revision_to_pom() { sed -ie "s|.*|${1}|" pom.xml > /dev/null } +# Get the next release for the given number +get_next_release() { + [[ -n $1 ]] || { echo "missing get_next_release() version argument" >&2; return 1; } + if [[ $1 =~ ^(.*)\.BUILD-SNAPSHOT$ ]]; then + local join="." + else + local join="-" + fi + local version + local result + version=$( strip_snapshot_suffix "$1" ) + result="${version}${join}RELEASE" + echo $result +} + # Get the next milestone release for the given number by inspecting current tags get_next_milestone_release() { [[ -n $1 ]] || { echo "missing get_next_milestone_release() version argument" >&2; return 1; } diff --git a/test/get_next_release.bats b/test/get_next_release.bats index ed3cfac..5a04160 100644 --- a/test/get_next_release.bats +++ b/test/get_next_release.bats @@ -84,6 +84,19 @@ source "$PWD/concourse-java.sh" assert_output "2.0.0.B3" } +@test "get_next_release() should return next release version" { + run get_next_release "1.5.0.BUILD-SNAPSHOT" + assert_output "1.5.0.RELEASE" + run get_next_release "1.5.0-SNAPSHOT" + assert_output "1.5.0-RELEASE" +} + +@test "get_next_release() when has no version should fail" { + run get_next_release + assert [ "$status" -eq 1 ] + assert_output "missing get_next_release() version argument" +} + mock_git_repo() { local tmpdir=$(mktemp -d $BATS_TMPDIR/gitrepo.XXXXXX) >&2 mkdir -p "$tmpdir" >&2