summaryrefslogtreecommitdiffstats
path: root/tools/version.sh
blob: def099d53ba90ae36562246e30c27a500ae56bba (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
#!/bin/sh

# Update all pom.xml with new build number
#
# TODO(sop) This should be converted to some sort of
# Java based Maven plugin so its fully portable.
#

SERVER_POMS=$(git ls-files | grep pom.xml | grep -v /src/main/resources/archetype-resources/pom.xml)
POM_FILES=$SERVER_POMS

# CORE PLUGIN LIST
PLUGINS="commit-message-length-validator replication reviewnotes"
for p in $PLUGINS
do
	POM_FILES="$POM_FILES $(cd plugins/$p && git ls-files | grep pom.xml | sed s,^,plugins/$p/,)"
done

case "$1" in
--snapshot=*)
	V=$(echo "$1" | perl -pe 's/^--snapshot=//')
	if [ -z "$V" ]
	then
		echo >&2 "usage: $0 --snapshot=0.n.0"
		exit 1
	fi
	case "$V" in
	*-SNAPSHOT) : ;;
	*) V=$V-SNAPSHOT ;;
	esac
	;;

--release)
	V=$(git describe HEAD) || exit
	;;

--reset)
	git checkout HEAD -- $SERVER_POMS
	for p in $PLUGINS
	do
		(cd plugins/$p; git checkout $(git ls-files | grep pom.xml))
	done
	exit $?
	;;

*)
	echo >&2 "usage: $0 {--snapshot=2.n | --release}"
	exit 1
esac

case "$V" in
v*) V=$(echo "$V" | perl -pe s/^v//) ;;
esac

perl -pi.bak -e '
	if ($ARGV ne $old_argv) {
		$seen_version = 0;
		$old_argv = $ARGV;
	}
	if (!$seen_version) {
		$seen_version = 1 if
		s{(<version>).*(</version>)}{${1}'"$V"'${2}};
	}
	' $POM_FILES

for pom in $POM_FILES
do
	rm -f ${pom}.bak
done