Fix version.sh
[egit/eclipse.git] / tools / version.sh
blob11406c21822f83b3a87cacfbc7eaa1b1d802e629
1 #!/bin/sh
2 # Copyright (C) 2009, Google Inc.
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Eclipse Public License v1.0
6 # which accompanies this distribution, and is available at
7 # http://www.eclipse.org/legal/epl-v10.html
9 # Update all pom.xml with new build number
11 # TODO(spearce) This should be converted to some sort of
12 # Java based Maven plugin so its fully portable.
18 while [ $# -gt 0 ]
20 case "$1" in
21 --snapshot=*)
22 V=$(echo "$1" | perl -pe 's/^--snapshot=//')
23 if [ -z "$V" ]
24 then
25 echo >&2 "usage: $0 --snapshot=0.n.0"
26 exit 1
28 case "$V" in
29 *-SNAPSHOT) : ;;
30 *) V=$V-SNAPSHOT ;;
31 esac
32 shift
35 --release)
36 V=$(git describe HEAD) || exit
37 shift
40 --jgit=*)
41 J=${1##--jgit=}
42 shift
46 echo >&2 "usage: $0 {--snapshot=0.n.0 | --release} [--jgit=0.n.0]"
47 exit 1
48 esac
49 done
51 case "$V" in
52 v*) V=$(echo "$V" | perl -pe s/^v//) ;;
53 '')
54 echo >&2 "usage: $0 {--snapshot=0.n.0 | --release}"
55 exit 1
56 esac
58 case "$V" in
59 *-SNAPSHOT)
60 POM_V=$V
61 OSGI_V="${V%%-SNAPSHOT}.qualifier"
63 *-[1-9]*-g[0-9a-f]*)
64 POM_V=$(echo "$V" | perl -pe 's/-(\d+-g.*)$/.$1/')
65 OSGI_V=$(perl -e '
66 $ARGV[0] =~ /^(\d+)(?:\.(\d+)(?:\.(\d+))?)?-(\d+)-g(.*)$/;
67 my ($a, $b, $c, $p, $r) = ($1, $2, $3, $4, $5);
68 $b = '0' unless defined $b;
69 $c = '0' unless defined $c;
71 printf "%s.%s.%s.%6.6i_g%s\n", $a, $b, $c, $p, $r;
72 ' "$V")
75 POM_V=$V
76 OSGI_V=$V
78 esac
80 to_version() {
81 perl -e '
82 $ARGV[0] =~ /^(\d+(?:\.\d+(?:\.\d+)?)?)/;
83 print $1
84 ' "$1"
87 next_version() {
88 perl -e '
89 $ARGV[0] =~ /^(\d+)(?:\.(\d+)(?:\.(\d+))?)?/;
90 my ($a, $b) = ($1, $2);
91 $b = 0 unless defined $b;
92 $b++;
93 print "$a.$b.0";
94 ' "$1"
97 EGIT_V=$(to_version "$V")
98 EGIT_N=$(next_version "$EGIT_V")
100 [ -z "$J" ] && J=$V
101 JGIT_V=$(to_version "$J")
102 JGIT_N=$(next_version "$JGIT_V")
104 perl -pi~ -e '
105 s/^(Bundle-Version:\s*).*$/${1}'"$OSGI_V"'/;
106 s/(org.eclipse.egit.*;version=")[^"[(]*(")/${1}'"$EGIT_V"'${2}/;
107 s/(org.eclipse.egit.*;version="\[)[^"]*(\)")/${1}'"$EGIT_V,$EGIT_N"'${2}/;
108 s/(org.eclipse.jgit.*;version="\[)[^"]*(\)")/${1}'"$JGIT_V,$JGIT_N"'${2}/;
109 s/(org.eclipse.jgit;bundle-version="\[)[^"]*(\)")/${1}'"$JGIT_V,$JGIT_N"'${2}/;
110 ' $(git ls-files | grep META-INF/MANIFEST.MF)
112 perl -pi~ -e '
113 if ($ARGV ne $old_argv) {
114 $seen_version = 0;
115 $old_argv = $ARGV;
117 if (!$seen_version) {
118 $seen_version = 1 if (!/<\?xml/ &&
119 s/(version=")[^"]*(")/${1}'"$OSGI_V"'${2}/);
121 s/(feature="org.eclipse.egit" version=")[^"]*(")/${1}'"$EGIT_V"'${2}/;
122 ' org.eclipse.egit.mylyn-feature/feature.xml
124 perl -pi~ -e '
125 if ($ARGV ne $old_argv) {
126 $seen_version = 0;
127 $old_argv = $ARGV;
129 if (!$seen_version) {
130 $seen_version = 1 if (!/<\?xml/ &&
131 s/(version=")[^"]*(")/${1}'"$OSGI_V"'${2}/);
133 s/(plugin="org.eclipse.egit.core" version=")[^"]*(")/${1}'"$EGIT_V"'${2}/;
134 s/(plugin="org.eclipse.egit.ui" version=")[^"]*(")/${1}'"$EGIT_V"'${2}/;
135 ' org.eclipse.egit.gitflow-feature/feature.xml
137 perl -pi~ -e '
138 if ($ARGV ne $old_argv) {
139 $seen_version = 0;
140 $old_argv = $ARGV;
142 if (!$seen_version) {
143 $seen_version = 1 if (!/<\?xml/ &&
144 s/(version=")[^"]*(")/${1}'"$OSGI_V"'${2}/);
146 s/(feature="org.eclipse.jgit" version=")[^"]*(")/${1}'"$JGIT_V"'${2}/;
147 ' $(git ls-files | grep feature.xml)
149 perl -pi~ -e '
150 s{<(version)>[^<\$]*</\1>}{<${1}>'"$POM_V"'</${1}>};
151 ' org.eclipse.egit-feature/pom.xml
153 perl -pi~ -e '
154 if ($ARGV ne $old_argv) {
155 $seen_version = 0;
156 $old_argv = $ARGV;
158 if (!$seen_version) {
159 $seen_version = 1 if
160 s{<(version)>[^<\$]*</\1>}{<${1}>'"$POM_V"'</${1}>};
162 s{<(egit-version)>[^<\$]*</\1>}{<${1}>'"$POM_V"'</${1}>};
163 ' pom.xml
165 perl -pi~ -e '
166 if ($ARGV ne $old_argv) {
167 $seen_version = 0;
168 $old_argv = $ARGV;
170 if ($seen_version < 2) {
171 $seen_version++ if
172 s{<(version)>[^<\$]*</\1>}{<${1}>'"$POM_V"'</${1}>};
174 ' org.eclipse.egit.repository/pom.xml
176 perl -pi~ -e '
177 if ($ARGV ne $old_argv) {
178 $seen_version = 0;
179 $seen_version2 = 0;
180 $old_argv = $ARGV;
182 if (!$seen_version) {
183 $seen_version = 1 if
184 s{<(version)>[^<\$]*</\1>}{<${1}>'"$POM_V"'</${1}>};
186 if ($seen_version2 < 2) {
187 $seen_version2++ if
188 s|(<version\>)([\.\d]*)(\</version\>)|${1}'$EGIT_V'${3}|;
190 ' org.eclipse.egit.ui.test/pom.xml
192 perl -pi~ -e '
193 if ($ARGV ne $old_argv) {
194 $seen_version = 0;
195 $seen_version2 = 0;
196 $old_argv = $ARGV;
198 if (!$seen_version) {
199 $seen_version = 1 if
200 s{<(version)>[^<\$]*</\1>}{<${1}>'"$POM_V"'</${1}>};
202 if ($seen_version2 < 3) {
203 $seen_version2++ if
204 s|(<version\>)([\.\d]*)(\</version\>)|${1}'$EGIT_V'${3}|;
206 ' org.eclipse.egit.mylyn.ui.test/pom.xml
208 perl -pi~ -e '
209 if ($ARGV ne $old_argv) {
210 $seen_version = 0;
211 $old_argv = $ARGV;
213 if (!$seen_version) {
214 $seen_version = 1 if
215 s{<(version)>[^<\$]*</\1>}{<${1}>'"$POM_V"'</${1}>};
217 s{<(jgit-version)>[^<]*</\1>}{<${1}>'"$J"'</${1}>};
218 ' $(git ls-files | grep pom.xml)
220 find . -name '*~' | xargs rm -f
221 git diff