Skip to content

Instantly share code, notes, and snippets.

@ostk0069
Created June 5, 2022 10:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ostk0069/8b29df35e04f912c8b998afd00e8df0a to your computer and use it in GitHub Desktop.
Save ostk0069/8b29df35e04f912c8b998afd00e8df0a to your computer and use it in GitHub Desktop.
Shell Script to manage your app version & build number
#!/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