Created
June 5, 2022 10:39
-
-
Save ostk0069/8b29df35e04f912c8b998afd00e8df0a to your computer and use it in GitHub Desktop.
Shell Script to manage your app version & build number
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
if ! type "gh" > /dev/null 2>&1; then | |
errorLog "gh not found. please install with `brew install gh` & auth with `gh auth login`" | |
exit 1 | |
fi | |
CURRENT_VERSION=$(cat .app-version) | |
VERSION_REGEX="([0-9]+).([0-9]+).([0-9]+)-([0-9]+)" | |
if [[ $CURRENT_VERSION =~ $VERSION_REGEX ]]; then | |
VERSION_MAJOR=${BASH_REMATCH[1]} | |
VERSION_MINOR=${BASH_REMATCH[2]} | |
VERSION_PATCH=${BASH_REMATCH[3]} | |
VERSION_BUILD=${BASH_REMATCH[4]} | |
fi | |
# ビルドナンバーは前のビルドナンバーに対して100インクリメントする | |
# インクリメント前のビルドナンバーのsuffixが00ではない場合は00になるように切り捨てる | |
# eg. 3.8.0-300 -> 3.8.0-400, 3.8.0-521 -> 3.8.0-600 (ビルドナンバーのみの更新時) | |
UPDATED_BUILD_NUM=$((((VERSION_BUILD + 100) / 100) * 100)) | |
UPDATED_MAJOR="$((VERSION_MAJOR + 1)).0.0-$UPDATED_BUILD_NUM" | |
UPDATED_MINOR="$VERSION_MAJOR.$((VERSION_MINOR + 1)).0-$UPDATED_BUILD_NUM" | |
UPDATED_PATCH="$VERSION_MAJOR.$VERSION_MINOR.$(($VERSION_PATCH + 1))-$UPDATED_BUILD_NUM" | |
UPDATED_BUILD="$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH-$UPDATED_BUILD_NUM" | |
echo '👻 リリース作業を開始します...' | |
echo "👻 現在の App のバージョンは $CURRENT_VERSION です" | |
PS3='👻 アップデートするバージョンの状態を選択してください: ' | |
SELECTION_MAJOR="Major($UPDATED_MAJOR)" | |
SELECTION_MINOR="Minor($UPDATED_MINOR)" | |
SELECTION_PATCH="Patch($UPDATED_PATCH)" | |
SELECTION_BUILD="Build-Only($UPDATED_BUILD)" | |
UPDATING_VERSION="-" | |
select ANSWER in $SELECTION_MAJOR $SELECTION_MINOR $SELECTION_PATCH $SELECTION_BUILD; do | |
if [ -z "$ANSWER" ]; then | |
continue | |
else | |
case "$ANSWER" in | |
"$SELECTION_MAJOR") UPDATING_VERSION=$UPDATED_MAJOR ;; | |
"$SELECTION_MINOR") UPDATING_VERSION=$UPDATED_MINOR ;; | |
"$SELECTION_PATCH") UPDATING_VERSION=$UPDATED_PATCH ;; | |
"$SELECTION_BUILD") UPDATING_VERSION=$UPDATED_BUILD ;; | |
esac | |
break | |
fi | |
done | |
echo "👻 $UPDATING_VERSION にアップデートし、Pull Requestの作成を行います" | |
read -p "👻 よろしいですか(y/n): " yn | |
case "$yn" in | |
[yY]*) ;; | |
*) exit 0 ;; | |
esac | |
BRANCH_NAME="release-$UPDATING_VERSION" | |
git checkout -b $BRANCH_NAME | |
# .app-version を今回リリースするversionに書き換える | |
echo $UPDATING_VERSION | tee .app-version | |
git add .app-version | |
# RELEASENOTES.mdに今回のversionについて追記する | |
BUILD_NAME=`echo $UPDATING_VERSION | sed -e 's/\([0-9\.]*\)-\(.*\)/\1/g'` | |
CURRENT_NOTE=`cat RELEASENOTES.md` | |
cat > RELEASENOTES.md << EOF | |
## $BUILD_NAME | |
# TODO: insert your app's default release note | |
$CURRENT_NOTE | |
EOF | |
git add RELEASENOTES.md | |
git commit -m "release: bump app version to $UPDATING_VERSION" | |
git push origin --no-verify $BRANCH_NAME | |
set -- "$@" --body-file scripts/release-pr-body.md | |
set -- "$@" --title "release: bump app version to $UPDATING_VERSION" | |
set -- "$@" --head $BRANCH_NAME | |
set -- "$@" --repo "" # TODO: insert your repo | |
gh pr create "$@" | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment