diff --git a/unity_release.sh b/unity_release.sh index ed87c98..910d6ee 100755 --- a/unity_release.sh +++ b/unity_release.sh @@ -1,7 +1,7 @@ #!/bin/bash -e # NOTE: Run the following command at the prompt -# bash <(curl -sL 'https://gist.github.com/mob-sakai/a883999a32dd8b1927639e46b3cd6801/raw/unity_release.sh') +# bash <(curl -sL 'https://gist.github.com/mob-sakai/e281baa04e1a47148b62387f9c7967df/raw/unity_release.sh') # NOTE: Set an environment variable `CHANGELOG_GITHUB_TOKEN` by running the following command at the prompt, or by adding it to your shell profile (e.g., ~/.bash_profile or ~/.zshrc): # export CHANGELOG_GITHUB_TOKEN="«your-40-digit-github-token»" @@ -12,6 +12,8 @@ echo -e ">> Start Github Release:" PACKAGE_NAME=`node -pe 'require("./package.json").name'` echo -e ">> Package name: ${PACKAGE_NAME}" CURRENT_VERSION=`grep -o -e "\"version\".*$" package.json | sed -e "s/\"version\": \"\(.*\)\".*$/\1/"` +EDITOR_ONLY=`grep -o -e "\"editorOnly\".*$" package.json | sed -e "s/\"editorOnly\": \(.*\),$/\1/"` +UNITY_PACKAGE_MANAGER=`grep -o -e "\"upmSupport\".*$" package.json | sed -e "s/\"upmSupport\": \(.*\),$/\1/"` read -p "[? (1/8) Input release version (for current: ${CURRENT_VERSION}): " RELEASE_VERSION [ -z "${RELEASE_VERSION}" ] && exit @@ -19,11 +21,13 @@ read -p "[? (1/8) Input release version (for current: ${CURRENT_VERSION}): " REL read -p "[? Are the issues on this release closed all? (y/N):" yn case "$yn" in [yY]*) ;; *) exit ;; esac -read -p "[? Is package editor only? (y/N):" yn -case "$yn" in [yY]*) EDITOR_ONLY=true;; *) ;; esac +[ -z $EDITOR_ONLY ] && read -p "[? Is package editor only? (y/N):" ynEditorOnly +case "$ynEditorOnly" in [yY]*) EDITOR_ONLY=true;; *) ;; esac -read -p "[? Is package for UnityPackageManager? (y/N):" yn -case "$yn" in [yY]*) UNITY_PACKAGE_MANAGER=true;; *) ;; esac +[ -z $UNITY_PACKAGE_MANAGER ] && read -p "[? Is package for UnityPackageManager? (y/N):" ynUPM +case "$ynUPM" in [yY]*) UNITY_PACKAGE_MANAGER=true;; *) ;; esac + +[ "$UNITY_PACKAGE_MANAGER" == "true" ] && RELEASE_VERSION_TAG="${RELEASE_VERSION}" || RELEASE_VERSION_TAG="v${RELEASE_VERSION}" echo -e ">> OK" @@ -31,10 +35,8 @@ echo -e ">> OK" # 2. << Update version in package.json >> echo -e "\n>> (2/8) Update version... package.json" -[ -L package.json ] && PKG_JSON_PATH=`readlink package.json` || PKG_JSON_PATH=package.json git checkout -B release develop -sed -i -e "s/\"version\": \(.*\)/\"version\": \"${RELEASE_VERSION}\",/g" "${PKG_JSON_PATH}" -rm "${PKG_JSON_PATH}-e" +sed -i '' -e "s/\"version\": \(.*\)/\"version\": \"${RELEASE_VERSION}\",/g" package.json echo -e ">> OK" @@ -45,7 +47,7 @@ UNITY_EDITOR="/Applications/Unity/Hub/Editor/${UNITY_VER}/Unity.app/Contents/Mac UNITY_LOG="unity.log" UNITY_ARGS="-quit -batchmode -projectPath `pwd` -logFile $UNITY_LOG" UNITY_PACKAGE_SRC=`node -pe 'require("./package.json").src'` -UNITY_PACKAGE_NAME="${PACKAGE_NAME}_${RELEASE_VERSION}.unitypackage" +UNITY_PACKAGE_NAME="${PACKAGE_NAME}_v${RELEASE_VERSION_TAG}.unitypackage" echo -e "\n>> (3/8) Check exporting package is available..." echo -e "Version: $UNITY_VER ($UNITY_EDITOR)" echo -e "Package Source: $UNITY_PACKAGE_SRC" @@ -73,11 +75,11 @@ set -e # 4. << Generate change log >> CHANGELOG_GENERATOR_ARG=`grep -o -e ".*git\"$" package.json | sed -e "s/^.*\/\([^\/]*\)\/\([^\/]*\).git.*$/--user \1 --project \2/"` -CHANGELOG_GENERATOR_ARG="--future-release ${RELEASE_VERSION} ${CHANGELOG_GENERATOR_ARG}" +CHANGELOG_GENERATOR_ARG="--future-release v${RELEASE_VERSION_TAG} ${CHANGELOG_GENERATOR_ARG}" echo -e "\n>> (4/8) Generate change log... ${CHANGELOG_GENERATOR_ARG}" github_changelog_generator ${CHANGELOG_GENERATOR_ARG} -[ -L CHANGELOG.md ] && git diff -- `readlink CHANGELOG.md` || git diff -- CHANGELOG.md +git diff -- CHANGELOG.md read -p "[? Is the change log correct? (y/N):" yn case "$yn" in [yY]*) ;; *) exit ;; esac echo -e ">> OK" @@ -87,6 +89,7 @@ echo -e ">> OK" # 5. << Export unitypackage >> echo -e "\n>> (5/8) Export unitypackage..." set +e +cp -f package.json CHANGELOG.md README.md $UNITY_PACKAGE_SRC "$UNITY_EDITOR" $UNITY_ARGS -exportpackage $UNITY_PACKAGE_SRC $UNITY_PACKAGE_NAME [ $? != 0 ] && echo -e "\n>> Error : \n`cat $UNITY_LOG | grep -E ': error CS|Fatal Error'`" && exit set -e @@ -96,26 +99,17 @@ echo -e ">> OK" # 6. << Commit release files >> echo -e "\n>> (6/8) Commit release files..." -[ -L CHANGELOG.md ] && git add -- "`readlink CHANGELOG.md`" || git add -- CHANGELOG.md -[ -L package.json ] && git add -- "`readlink package.json`" || git add -- package.json -git commit -m "update change log" +git add -u +git commit -m "update documents for v$RELEASE_VERSION_TAG" echo -e ">> OK" -# 7. << Split for upm >> -if [ "$UNITY_PACKAGE_MANAGER" == "true" ]; then - echo -e "\n>> Split for upm..." - git subtree split --prefix="$UNITY_PACKAGE_SRC" --branch upm - git push origin upm -fi - - # 7. << Merge and push master and develop branch >> echo -e "\n>> (7/8) Merge and push..." git checkout master -git merge --no-ff release -m "release $RELEASE_VERSION" +git merge --no-ff release -m "release v$RELEASE_VERSION_TAG" git branch -D release git push origin master git checkout develop @@ -127,11 +121,18 @@ echo -e ">> OK" # 8. << Upload unitypackage and release on Github >> echo -e "\n>> (8/8) Releasing..." -[ "$UNITY_PACKAGE_MANAGER" == "true" ] && git checkout upm -f -gh-release --assets $UNITY_PACKAGE_NAME --name $RELEASE_VERSION --tag_name $RELEASE_VERSION +gh-release --assets $UNITY_PACKAGE_NAME echo -e ">> OK" +# 9. << Split for upm >> +if [ "$UNITY_PACKAGE_MANAGER" == "true" ]; then + echo -e "\n>> Split for upm..." + git subtree split --prefix="$UNITY_PACKAGE_SRC" --branch upm + git push origin upm +fi -echo -e "\n\n>> $PACKAGE_NAME $RELEASE_VERSION has been successfully released!\n" + + +echo -e "\n\n>> $PACKAGE_NAME v$RELEASE_VERSION_TAG has been successfully released!\n" \ No newline at end of file