blob: cf834ff97c966d43bab270b9f097d32aef3af33d [file] [log] [blame]
#!/usr/bin/env bash
RESTORE=$(echo -en '\033[0m')
RED=$(echo -en '\033[00;31m')
GREEN=$(echo -en '\033[00;32m')
YELLOW=$(echo -en '\033[00;33m')
BLUE=$(echo -en '\033[00;34m')
MAGENTA=$(echo -en '\033[00;35m')
PURPLE=$(echo -en '\033[00;35m')
CYAN=$(echo -en '\033[00;36m')
LIGHTGRAY=$(echo -en '\033[00;37m')
LRED=$(echo -en '\033[01;31m')
LGREEN=$(echo -en '\033[01;32m')
LYELLOW=$(echo -en '\033[01;33m')
LBLUE=$(echo -en '\033[01;34m')
LMAGENTA=$(echo -en '\033[01;35m')
LPURPLE=$(echo -en '\033[01;35m')
LCYAN=$(echo -en '\033[01;36m')
WHITE=$(echo -en '\033[01;37m')
function info () {
echo -e $*
}
function notice () {
echo -e "${CYAN}$*${RESTORE}"
}
function warning () {
echo -e "${YELLOW}$*${RESTORE}"
}
function error () {
echo -e "${RED}$*${RESTORE}"
}
function prepareWorkingDir () {
read -e -p "Your upstream git remote is? [origin]"
export remote=${REPLY:="origin"}
info "Fetching latest changes and prune ${LGREEN}$remote${RESTORE}..."
git fetch -p -t "$remote" || { error "It is not able to fetch codes from your $remote, check if there is any issue."; exit 1; }
git remote prune "$remote"
info "${GREEN}Done.${RESTORE}"
}
function isValidVersion () {
echo "$1" | awk '/^[0-9]+\.[0-9]+(\.[0-9]+){0,2}(-rc[0-9]+|-beta[0-9]+)?$/ {print $0}'
}
function isBetaVersion () {
echo "$1" | awk '/^[0-9]+\.[0-9]+(\.[0-9]+){0,2}-beta[0-9]+$/ {print $0}'
}
function isRCVersion () {
echo "$1" | awk '/^[0-9]+\.[0-9]+(\.[0-9]+){0,2}-rc[0-9]+$/ {print $0}'
}
function latestVersion () {
git tag -l | awk '/^0\.[0-9]+(\.[0-9]+){0,2}(-rc[0-9]+|-beta[0-9]+)?$/ { print $0 }' | sort -rV | head -n 1
}
function latestNonRCVersion () {
git tag -l | awk '/^0\.[0-9]+(\.[0-9]+){0,2}(-beta[0-9]+)?$/ { print $0 }' | sort -rV | head -n 1
}
function betaNumber () {
echo "$1" | awk -F 'beta' '{print $2}'
}
function rcNumber () {
echo "$1" | awk -F 'rc' '{print $2}'
}
function gitRepoModified () {
git status --short | awk '/^[ M][ M] / { print $0 }'
}
function stashLocalChanges () {
if [ "$(gitRepoModified)" ]; then
read -e -p "Your working directory is modified, stash it? [Y/n]" -n 1
shouldStash=${REPLY:=y}
if [ ${shouldStash,,} = y ]; then
git stash
else
info "Change ignored."
fi
fi
}
function increaseBetaVersion () {
if [ $(isRCVersion "$1") ]; then
# Unable to increase beta version number on a RC version, exit.
return 1
fi
if [ $(isBetaVersion "$1") ]; then
echo "$1" | awk -F 'beta' '{printf("%sbeta%d\n", $1, $2+1)}'
else
echo "$1" | awk -F '.' '/^([0-9]+\.){1,3}([0-9]+)$/ {
for(i=1;i<=NF;i++) {
if (i==NF) {
printf("%d-beta1\n", $i+1)
} else {
printf("%d.", $i)
}
}
}'
fi
}
function increaseRCVersion () {
if [ $(isBetaVersion "$1") ]; then
# Unable to increase rc version number on a beta version, exit.
return 1
fi
if [ $(isRCVersion "$1") ]; then
echo "$1" | awk -F 'rc' '{printf("%src%d\n", $1, $2+1)}'
else
echo "$1" | awk -F '.' '/^([0-9]+\.){1,3}([0-9]+)$/ {
for(i=1;i<=NF;i++) {
if (i==NF) {
printf("%d-rc1\n", $i+1)
} else {
printf("%d.", $i)
}
}
}'
fi
}