94 lines
2.2 KiB
Bash
94 lines
2.2 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Copyright 2015 Xebia Nederland B.V.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
function hasChanges() {
|
|
test -n "$(git status -s .)"
|
|
}
|
|
|
|
function getRelease() {
|
|
awk -F= '/release/{print $2}' .release
|
|
}
|
|
|
|
function getBaseTag() {
|
|
sed -n -e "s/tag=\(.*\)$(getRelease)\$/\1/p" .release
|
|
}
|
|
|
|
function getTag() {
|
|
if [ -z "$1" ] ; then
|
|
awk -F= '/tag/{print $2}' .release
|
|
else
|
|
echo "$(getBaseTag)$1"
|
|
fi
|
|
}
|
|
|
|
function setRelease() {
|
|
if [ -n "$1" ] ; then
|
|
sed -e "s/tag=.*/tag=$(getTag $1)/" .release > .release.x
|
|
sed -e "s/release=.*/release=$1/g" .release.x > .release
|
|
rm -f .release.x
|
|
else
|
|
echo "ERROR: missing release version parameter " >&2
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
function tagExists() {
|
|
tag=${1:-$(getTag)}
|
|
test -n "$tag" && test -n "$(git tag | grep "^$tag\$")"
|
|
}
|
|
|
|
function differsFromRelease() {
|
|
tag=$(getTag)
|
|
! tagExists $tag || test -n "$(git diff --shortstat -r $tag .)"
|
|
}
|
|
|
|
function getVersion() {
|
|
result=$(getRelease)
|
|
|
|
if differsFromRelease; then
|
|
result="$result-$(git rev-parse --short HEAD)"
|
|
fi
|
|
|
|
if hasChanges ; then
|
|
result="$result-dirty"
|
|
fi
|
|
echo $result
|
|
}
|
|
|
|
function nextPatchLevel() {
|
|
version=${1:-$(getRelease)}
|
|
major_and_minor=$(echo $version | cut -d. -f1,2)
|
|
patch=$(echo $version | cut -d. -f3)
|
|
version=$(printf "%s.%d" $major_and_minor $(($patch + 1)))
|
|
echo $version
|
|
}
|
|
|
|
function nextMinorLevel() {
|
|
version=${1:-$(getRelease)}
|
|
major=$(echo $version | cut -d. -f1);
|
|
minor=$(echo $version | cut -d. -f2);
|
|
version=$(printf "%d.%d.0" $major $(($minor + 1))) ;
|
|
echo $version
|
|
}
|
|
|
|
function nextMajorLevel() {
|
|
version=${1:-$(getRelease)}
|
|
major=$(echo $version | cut -d. -f1);
|
|
version=$(printf "%d.0.0" $(($major + 1)))
|
|
echo $version
|
|
}
|