SchildiChat-android/increment_version.sh

85 lines
2.0 KiB
Bash
Raw Normal View History

#!/bin/bash
set -e
mydir="$(dirname "$(realpath "$0")")"
source "$mydir/merge_helpers.sh"
require_clean_git
pushd "$mydir" > /dev/null
last_tag=`downstream_latest_tag`
build_gradle="vector/build.gradle"
get_prop() {
local prop="$1"
cat "$build_gradle" | grep "$prop = " | sed "s|$prop = ||"
}
set_prop() {
local prop="$1"
local value="$2"
if grep -q "$prop =" "$build_gradle"; then
local equals="= "
local not_equals=""
else
local equals=""
# Don't touch lines that have an equals in it, but not for this prop
local not_equals="/=/! "
fi
sed -i "$not_equals""s|\($prop $equals\).*|\1$value|g" "$build_gradle"
}
calculate_version_code() {
echo "(($versionMajor * 10000 + $versionMinor * 100 + $versionPatch + $scVersion) + 4000000) * 10" | bc
}
#
# Increase version
#
versionMajor=`get_prop ext.versionMajor`
versionMinor=`get_prop ext.versionMinor`
versionPatch=`get_prop ext.versionPatch`
scVersion=`get_prop ext.scVersion`
previousVersionCode=`grep '^ versionCode ' "$build_gradle" | sed 's|^ versionCode ||'`
versionCode=`calculate_version_code`
if [ "$versionCode" = "$previousVersionCode" ]; then
((scVersion++))
echo "Increase downstream version to $scVersion"
versionCode=`calculate_version_code`
else
echo "Upstream version upgrade, no need to change downstream version"
fi
version="$versionMajor.$versionMinor.$versionPatch.sc.$scVersion"
new_tag="sc_v$version"
set_prop "ext.scVersion" "$scVersion"
set_prop "versionCode" "$versionCode"
set_prop "versionName" "\"$version\""
#
# Generate changelog
#
changelog_dir=fastlane/metadata/android/en-US/changelogs
changelog_file="$changelog_dir/$versionCode.txt"
mkdir -p "$changelog_dir"
git log --reverse --pretty=format:"- %s" "$last_tag".. --committer="$(git config user.name)" > "$changelog_file"
$EDITOR "$changelog_file" || true
read -p "Press enter when changelog is done"
git add -A
git commit -m "Increment version"
git tag "$new_tag"
popd > /dev/null