aboutsummaryrefslogtreecommitdiffstats
path: root/update-hook.sh
blob: ff4d20be7ec4588ba009112a7070add0b3dd4283 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/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 <ref> <oldrev> <newrev>)" >&2
	exit 1
fi

if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
	echo "usage: $0 <ref> <oldrev> <newrev>" >&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