Ryan Harg
3 years ago
4 changed files with 89 additions and 1 deletions
@ -0,0 +1 @@
@@ -0,0 +1 @@
|
||||
Add hard coded version information for F-Droid deployment (#97) |
@ -0,0 +1,85 @@
@@ -0,0 +1,85 @@
|
||||
#!/bin/bash |
||||
# This script creates a new release of Funkwhale for Android. |
||||
# |
||||
# Usage: ./create-release.sh TAG |
||||
|
||||
# tokenize_tag() - tokenize tag parameter, splitting at dot |
||||
# |
||||
# Expects a string parameter with format MAJOR.MINOR.PATCH, e.g. 1.2.3 |
||||
# Returns an array containing elements for MAJOR, MINOR and PATCH |
||||
function tokenize_tag() { |
||||
IFS="." read -ra TOKENS <<< "$1" |
||||
} |
||||
|
||||
# version_code() - create a numeric version code from a tokenized tag parameter |
||||
# that conforms to the version code format from the |
||||
# gradle build script |
||||
# |
||||
# Expects an array parameter with entries for MAJOR, MINOR and PATCH version parts |
||||
# Returns a formatted version code, leading zeroes are stripped |
||||
function version_code() { |
||||
|
||||
result="" |
||||
|
||||
# Every version part is filled with leading zeros to a string of size 2 |
||||
for token in "$@" |
||||
do |
||||
((leadingZeros=2-${#token})) |
||||
for _ in $(seq 1 "$leadingZeros") |
||||
do |
||||
token="${token}0" |
||||
done |
||||
result="$result$token" |
||||
done |
||||
|
||||
# strip leading zeroes, add three trailing zeroes and return |
||||
echo "${result#"${result%%[!0]*}"}000" |
||||
} |
||||
|
||||
# Validate if script is used with correct number of params |
||||
if [ $# -lt 1 ]; then |
||||
echo 'Usage: ./create-release.sh TAG' >&2 |
||||
echo ' TAG format MAJOR.MINOR.PATH, e.g. 1.2.3' >&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
tokenize_tag "$1" |
||||
|
||||
# Validate tag parameter format |
||||
if [ ${#TOKENS[@]} != 3 ]; then |
||||
echo 'ERROR: Invalid tag parameter format.' >&2 |
||||
echo 'Use MAJOR.MINOR.PATCH scheme, e.g. 1.2.3' >&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
# Validate that git repository is not dirty |
||||
if [ "$(git diff --stat)" != '' ]; then |
||||
echo 'ERROR: repository is dirty.' >&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
TAG="$1" |
||||
MESSAGE="Creating release version $TAG" |
||||
|
||||
echo "Compiling the changelog..." |
||||
towncrier build --version "$TAG" --date $(date +"%Y-%m-%d") |
||||
|
||||
git add CHANGELOG |
||||
git comit --message "Update changelog for version $TAG" |
||||
|
||||
# Validate that git tag doesn't already exist |
||||
git fetch --all --tags |
||||
if [ "$(git tag -l | grep -e "^$TAG$")" != '' ]; then |
||||
echo "ERROR: tag $TAG already exists." >&2 |
||||
exit 1 |
||||
fi |
||||
|
||||
# Write versionCode and versionName to a file that F-Droid can parse |
||||
echo "versionCode = $(version_code "${TOKENS[@]}") |
||||
versionName = $TAG" > fdroidversion.txt |
||||
|
||||
echo "Tagging the application..." |
||||
|
||||
# Create and push tag |
||||
git tag -a -s -m "$MESSAGE" "$TAG" |
||||
git push --tags |
Loading…
Reference in new issue