50 lines
1.5 KiB
Bash
Executable File
50 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -o nounset # disallow usage of unset vars ( set -u )
|
|
set -o errexit # Exit immediately if a pipeline returns non-zero. ( set -e )
|
|
set -o errtrace # Allow the above trap be inherited by all functions in the script. ( set -E )
|
|
set -o pipefail # Return value of a pipeline is the value of the last (rightmost) command to exit with a non-zero status
|
|
IFS=$'\n\t' # Set $IFS to only newline and tab.
|
|
|
|
|
|
function black() { echo -e "\x1B[30m $1 \x1B[0m"; }
|
|
function red() { echo -e "\x1B[31m $1 \x1B[0m"; }
|
|
function green() { echo -e "\x1B[32m $1 \x1B[0m"; }
|
|
function yellow(){ echo -e "\x1B[33m $1 \x1B[0m"; }
|
|
function blue() { echo -e "\x1B[34m $1 \x1B[0m"; }
|
|
function purple(){ echo -e "\x1B[35m $1 \x1B[0m"; }
|
|
function cyan() { echo -e "\x1B[36m $1 \x1B[0m"; }
|
|
function white() { echo -e "\x1B[37m $1 \x1B[0m"; }
|
|
|
|
if [ "$( git rev-parse --abbrev-ref HEAD )" != "master" ]; then
|
|
>&2 red "[ERROR] Can only create versions of <master>"
|
|
exit 1
|
|
fi
|
|
|
|
git pull --rebase
|
|
|
|
curr_vers=$(git describe --tags --abbrev=0 | sed 's/v//g')
|
|
|
|
next_ver=$(echo "$curr_vers" | awk -F. -v OFS=. 'NF==1{print ++$NF}; NF>1{if(length($NF+1)>length($NF))$(NF-1)++; $NF=sprintf("%0*d", length($NF), ($NF+1)%(10^length($NF))); print}')
|
|
|
|
echo ""
|
|
echo "> Current Version: ${curr_vers}"
|
|
echo "> Next Version: ${next_ver}"
|
|
echo ""
|
|
|
|
git add --verbose .
|
|
|
|
msg="v${next_ver}"
|
|
|
|
if [ $# -gt 0 ]; then
|
|
msg="$1"
|
|
fi
|
|
|
|
git commit -a -m "${msg}"
|
|
|
|
git tag "v${next_ver}"
|
|
|
|
git push
|
|
git push --tags
|
|
|