Created
August 1, 2016 15:46
-
-
Save Judas/2f235fc482c5e8cae33e20f8f112f115 to your computer and use it in GitHub Desktop.
Release script for Android module (git-flow, semver, dependencies...)
This file contains hidden or 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/sh | |
function printHelp { | |
echo "" | |
echo "USAGE: release <command>" | |
echo " help Shows this help message." | |
echo " major Releases a major version" | |
echo " minor Releases a minor version" | |
echo " patch Releases a patch version" | |
} | |
TYPE_MAJOR=0 | |
TYPE_MINOR=1 | |
TYPE_PATCH=2 | |
type=${TYPE_PATCH} | |
case $1 in | |
"major") | |
type=${TYPE_MAJOR} | |
;; | |
"minor") | |
type=${TYPE_MINOR} | |
;; | |
"patch") | |
type=${TYPE_PATCH} | |
;; | |
"help") | |
printHelp | |
exit 0 | |
;; | |
*) | |
echo "Unknown argument" | |
printHelp | |
exit 0 | |
;; | |
esac | |
echo "WARNING - This will remove all your current uncommited/unstashed modifications." | |
echo "Proceed anyway ? [y/n]" | |
read -s -n 1 key | |
case $key in | |
y) ;; | |
*) exit 0 | |
esac | |
echo "=> Cleaning repository..." | |
git clean -fxdq | |
git checkout . -q | |
echo "=> Updating develop..." | |
git checkout develop -q | |
git pull origin develop -q | |
echo "=> Updating master..." | |
git checkout master -q | |
git pull origin master -q | |
echo "=> Computing new semver..." | |
lastVersion=`git tag -l v* --sort -v:refname | sed -n 1p` | |
lastVersion="${lastVersion:1}" | |
versionArray=( ${lastVersion//./ } ) | |
if [ ${type} = ${TYPE_MAJOR} ] | |
then | |
((versionArray[0]++)) | |
versionArray[1]=0 | |
versionArray[2]=0 | |
fi | |
if [ ${type} = ${TYPE_MINOR} ] | |
then | |
((versionArray[1]++)) | |
versionArray[2]=0 | |
fi | |
if [ ${type} = ${TYPE_PATCH} ] | |
then | |
((versionArray[2]++)) | |
fi | |
newVersion="${versionArray[0]}.${versionArray[1]}.${versionArray[2]}" | |
echo "${lastVersion} => ${newVersion}" | |
echo "=> Starting release..." | |
git flow release start v${newVersion} | |
echo "=> Updating build number..." | |
module=${PWD##*/} | |
sed -i '' "s/versionName '${lastVersion}'/versionName '${newVersion}'/" ${module}/build.gradle | |
code=`cat ${module}/build.gradle | sed -e '/versionCode/!d' | sed -e "s/\(.*\)versionCode \([0-9]\{1,\}\)\(.*\)/\2/g"` | |
((code++)) | |
sed -i '' "s/versionCode \([0-9]\{1,\}\)/versionCode ${code}/g" ${module}/build.gradle | |
echo "=> Updating to latest dependencies..." | |
cp ${module}/build.gradle ${module}/build.gradle.tmp | |
while read line ; do | |
if [[ ${line} == *"'com.iadvize.android."* ]] ; then | |
# Get dependency module name | |
depName=`echo "${line}" | sed "s/\(.*\)'com.iadvize.android.\(.*\):\(.*\):\(.*\)@aar'\(.*\)/\3/g"` | |
# Get latest dependency version | |
curl -s -u user:password -X GET "https://...path to artifactory.../com/iadvize/android/release/${depName}/maven-metadata.xml" > data | |
while read dataLine ; do | |
if [[ ${dataLine} == *"latest"* ]] ; then | |
depVersion=`echo "${dataLine}" | sed -e "s/<latest>//g" | sed -e "s/<\/latest>//g"` | |
break | |
fi | |
done < data | |
rm data | |
# Update dependency version into build.gradle | |
sed -i '' "s/\(.*\)'com.iadvize.android.\(.*\):${depName}:\(.*\)@aar'\(.*\)/\1'com.iadvize.android.\2:${depName}:${depVersion}@aar'\4/" ${module}/build.gradle | |
fi | |
done < ${module}/build.gradle.tmp | |
rm ${module}/build.gradle.tmp | |
echo "=> Committing..." | |
git add ${module}/build.gradle | |
git commit -m 'misc(build): Updating dependencies & build number' --quiet | |
echo "Finishing release..." | |
git flow release finish v${newVersion} | |
echo "Pushing..." | |
git push origin develop | |
git push origin master | |
git push --tags |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment