#!/bin/sh # # Update Hook to ensure the version code is increased in a new tag # # --- Command line refname="$1" oldrev="$2" newrev="$3" # --- Safety check if [ -z "$GIT_DIR" ]; then echo "Don't run this script from the command line." >&2 echo " (if you want, you could supply GIT_DIR then run" >&2 echo " $0 )" >&2 exit 1 fi if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then echo "usage: $0 " >&2 exit 1 fi # --- Check types # if $newrev is 0000...0000, it's a commit to delete a ref. zero="0000000000000000000000000000000000000000" if [ "$newrev" = "$zero" ]; then newrev_type=delete else newrev_type=$(git cat-file -t $newrev) fi case "$refname","$newrev_type" in refs/tags/*,commit) # un-annotated tag oldVersionCode=`git archive $(git describe --tags) build.gradle | tar -xO | less - | grep versionCode | awk '{print $2}' 2> /dev/null` if [[ "$oldVersionCode" =~ ^[0-9]+$ ]] then echo "*** Old version code is not an integer" >&2 exit 1 fi newVersionCode=`git archive $newrev build.gradle | tar -xO | less - | grep versionCode | awk '{print $2}' 2> /dev/null` if [[ "$newVersionCode" =~ ^[0-9]+$ ]] then echo "*** New version code is not an integer" >&2 exit 1 fi if [ "$oldVersionCode" = "$newVersionCode" ]; then echo "*** A new version code is needed to commit" >&2 exit 1 fi ;; refs/tags/*,tag) # annotated tag oldVersionCode=`git archive $(git describe --tags) build.gradle | tar -xO | less - | grep versionCode | awk '{print $2}' 2> /dev/null` if [[ "$oldVersionCode" =~ ^[0-9]+$ ]] then echo "*** Old version code is not an integer" >&2 exit 1 fi newVersionCode=`git archive $newrev build.gradle | tar -xO | less - | grep versionCode | awk '{print $2}' 2> /dev/null` if [[ "$newVersionCode" =~ ^[0-9]+$ ]] then echo "*** New version code is not an integer" >&2 exit 1 fi if [ "$oldVersionCode" = "$newVersionCode" ]; then echo "*** A new version code is needed to commit" >&2 exit 1 fi ;; esac # --- Finished exit 0