Improved bump tool to fit the release branches
This commit is contained in:
parent
94b99350fc
commit
83a7878043
1 changed files with 50 additions and 9 deletions
|
@ -26,14 +26,20 @@ NODE_META="package.json"
|
||||||
|
|
||||||
_check_src() {
|
_check_src() {
|
||||||
if [[ ! -f $1 && ! -d $1 ]]; then
|
if [[ ! -f $1 && ! -d $1 ]]; then
|
||||||
echo -e "Error: missing file \"$1\"!\n"
|
echo -e "Error: Missing file \"$1\"!\n"
|
||||||
exit -1
|
exit -1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
check() {
|
check() {
|
||||||
if [[ -n $(git status . -s) ]]; then
|
if [[ -n $(git status . -s) ]]; then
|
||||||
echo "Warning: commit unstaged files first, and then run this tool againt."
|
echo "Error: Commit unstaged files first, and then run this tool againt."
|
||||||
|
exit -1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ensure the current branch is 'master'
|
||||||
|
if [[ "$(git branch --show-current)" != "master" ]]; then
|
||||||
|
echo "Error: This operation must be performed on the 'master' branch!"
|
||||||
exit -1
|
exit -1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -76,13 +82,51 @@ bump() {
|
||||||
}
|
}
|
||||||
|
|
||||||
build_gem() {
|
build_gem() {
|
||||||
|
rm -f ./*.gem
|
||||||
gem build "$GEM_SPEC"
|
gem build "$GEM_SPEC"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
release() {
|
||||||
|
_version="$1"
|
||||||
|
_major=""
|
||||||
|
_minor=""
|
||||||
|
|
||||||
|
IFS='.' read -r -a array <<< "$_version"
|
||||||
|
|
||||||
|
for elem in "${array[@]}"; do
|
||||||
|
if [[ -z $_major ]]; then
|
||||||
|
_major="$elem"
|
||||||
|
elif [[ -z $_minor ]]; then
|
||||||
|
_minor="$elem"
|
||||||
|
else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
_release_branch="$_major-$_minor-stable"
|
||||||
|
|
||||||
|
if [[ -z $(git branch -v | grep "$_release_branch") ]]; then
|
||||||
|
git checkout -b "$_release_branch"
|
||||||
|
else
|
||||||
|
git checkout "$_release_branch"
|
||||||
|
# cherry-pick the latest 2 commit from master to release branch
|
||||||
|
git cherry-pick "$(git rev-parse master~1)" "$(git rev-parse master)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "Create tag v$_version\n"
|
||||||
|
git tag "v$_version"
|
||||||
|
|
||||||
|
build_gem
|
||||||
|
|
||||||
|
# head back to master branch
|
||||||
|
git checkout master
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
check
|
check
|
||||||
|
|
||||||
_latest_tag="$(git describe --tags --abbrev=0)"
|
_latest_tag="$(git describe --tags $(git rev-list --tags --max-count=1))"
|
||||||
|
|
||||||
echo "Input a version number (hint: latest version is ${_latest_tag:1})"
|
echo "Input a version number (hint: latest version is ${_latest_tag:1})"
|
||||||
|
|
||||||
|
@ -98,16 +142,13 @@ main() {
|
||||||
echo -e "Bump version to $_version\n"
|
echo -e "Bump version to $_version\n"
|
||||||
bump "$_version"
|
bump "$_version"
|
||||||
|
|
||||||
echo -e "Create tag v$_version\n"
|
echo -e "Release to v$_version\n"
|
||||||
git tag "v$_version"
|
release "$_version"
|
||||||
|
|
||||||
build_gem
|
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
echo "Error: Illegal version number: '$_version'"
|
echo "Error: Illegal version number: '$_version'"
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
main
|
main
|
||||||
|
|
Loading…
Reference in a new issue