UpdatePoint revision 1.1.1.3 1 1.1 christos #! /bin/sh
2 1.1 christos
3 1.1 christos # showusage is set to 1 on any command-line syntax error
4 1.1 christos showusage=0
5 1.1 christos # are we playing by stable or dev rules?
6 1.1 christos repo=
7 1.1 christos # test is set to 1 if -t/--test is given to prevent modifications
8 1.1 christos test=0
9 1.1 christos
10 1.1 christos case "$#" in
11 1.1 christos 1) repo=$1
12 1.1 christos ;;
13 1.1 christos 2) repo=$2
14 1.1 christos case $1 in
15 1.1 christos -t|--test)
16 1.1 christos test=1
17 1.1 christos ;;
18 1.1 christos *)
19 1.1 christos showusage=1
20 1.1 christos ;;
21 1.1 christos esac
22 1.1 christos ;;
23 1.1 christos *) showusage=1
24 1.1 christos ;;
25 1.1 christos esac
26 1.1 christos
27 1.1 christos case "$repo" in
28 1.1 christos dev|stable)
29 1.1 christos ;;
30 1.1 christos '')
31 1.1 christos showusage=1
32 1.1 christos ;;
33 1.1 christos *) echo "Unexpected repo type: <$repo>!"
34 1.1 christos showusage=1
35 1.1 christos ;;
36 1.1 christos esac
37 1.1 christos
38 1.1 christos case "$showusage" in
39 1.1 christos 1) echo "Usage: $0 [-t] <stable|dev>"
40 1.1 christos echo "No changes are made to packageinfo.sh if -t is given."
41 1.1 christos exit 1
42 1.1 christos ;;
43 1.1 christos esac
44 1.1 christos
45 1.1 christos
46 1.1 christos set -e
47 1.1 christos
48 1.1 christos . ./packageinfo.sh
49 1.1 christos
50 1.1 christos case "$repotype" in
51 1.1 christos $repo)
52 1.1 christos ;;
53 1.1 christos *) echo "You indicated repo type <$repo> but packageinfo.sh"
54 1.1 christos echo "indicates <$repotype>."
55 1.1 christos exit 1
56 1.1 christos ;;
57 1.1 christos esac
58 1.1 christos
59 1.1 christos ver_repo_mismatch=1
60 1.1 christos
61 1.1 christos case "$minor" in
62 1.1 christos 1|3|5|7|9)
63 1.1 christos case "$repo" in
64 1.1 christos dev)
65 1.1 christos ver_repo_mismatch=0
66 1.1 christos ;;
67 1.1 christos stable)
68 1.1 christos ;;
69 1.1 christos esac
70 1.1 christos ;;
71 1.1 christos 0|2|4|6|8)
72 1.1 christos case "$repo" in
73 1.1 christos dev)
74 1.1 christos ;;
75 1.1 christos stable)
76 1.1 christos ver_repo_mismatch=0
77 1.1 christos ;;
78 1.1 christos esac
79 1.1 christos ;;
80 1.1 christos esac
81 1.1 christos
82 1.1 christos case "$ver_repo_mismatch" in
83 1.1 christos 1) echo "Minor version <$minor> mismatches repotype <$repo>."
84 1.1 christos exit 1
85 1.1 christos ;;
86 1.1 christos esac
87 1.1 christos
88 1.1 christos # Do we want to bump the point?
89 1.1 christos bp=1
90 1.1 christos # Do we want to bump the beta point?
91 1.1 christos bbp=0
92 1.1 christos # Do we want to change the RC point? (n=no, z=empty rcpoint and zero
93 1.1 christos # betapoint, i=incr)
94 1.1 christos crcp=n
95 1.1 christos # Do we want to change the prerelease value?
96 1.1 christos setpr=0
97 1.1 christos
98 1.1 christos # for stable:
99 1.1 christos # if we are not in a beta or RC state, enter beta unless point is NEW.
100 1.1 christos # if we are in a beta state:
101 1.1 christos # - bump the beta point
102 1.1 christos # else if we are in an RC state:
103 1.1 christos # - if rcpoint is GO:
104 1.1 christos # - - set rcpoint= (empty)
105 1.1 christos # - - set prerelease= (empty)
106 1.1 christos # - - set betapoint=0
107 1.1 christos # - else
108 1.1 christos # - - if rcpoint==(empty)
109 1.1 christos # - - - (bump-point) and set rcpoint to 0 (and fall thru, so -RC1 is first)
110 1.1 christos # - - bump the RC point
111 1.1 christos
112 1.1 christos # for dev, we only want to bump-point and possibly clear prerelease,
113 1.1 christos # but we do not modify rcpoint nor betapoint.
114 1.1 christos
115 1.1 christos case "$repo" in
116 1.1 christos dev)
117 1.1 christos case "$point" in
118 1.1 christos [Nn][Ee][Ww])
119 1.1 christos crcp=z
120 1.1 christos ;;
121 1.1 christos *)
122 1.1 christos # crcp=n
123 1.1 christos ;;
124 1.1 christos esac
125 1.1 christos # bp=1
126 1.1 christos ;;
127 1.1 christos stable)
128 1.1 christos case "$prerelease" in
129 1.1 christos '')
130 1.1.1.3 christos # echo "Checking <$betapoint::$rcpoint::$point>"
131 1.1 christos case "$betapoint::$rcpoint::$point" in
132 1.1 christos *::*::NEW)
133 1.1 christos # new minor release (no p)
134 1.1 christos crcp=z
135 1.1 christos # bp=1
136 1.1 christos ;;
137 1.1 christos 0::::*)
138 1.1 christos # start of first beta cycle for the next point release
139 1.1 christos setpr=1
140 1.1 christos newpr=beta
141 1.1 christos # bp=1
142 1.1 christos bbp=1
143 1.1 christos ;;
144 1.1 christos 0::[Gg][Oo]::*)
145 1.1 christos # skip all -beta and -RC prereleases to the next point.
146 1.1 christos crcp=z
147 1.1 christos setpr=1
148 1.1 christos newpr=
149 1.1 christos # bp=1
150 1.1 christos # bbp=0
151 1.1 christos ;;
152 1.1.1.3 christos ::[Gg][Oo]::*)
153 1.1.1.3 christos # echo "Good - betapoint is empty. Look in $0 and figure out what's going on here."
154 1.1.1.3 christos crcp=z
155 1.1.1.3 christos ;;
156 1.1.1.3 christos *::[Gg][Oo]::*)
157 1.1.1.3 christos echo "betapoint is NOT empty. Look in $0 and figure out what's going on here."
158 1.1.1.3 christos test=1
159 1.1.1.3 christos ;;
160 1.1 christos *) echo "betapoint is <$betapoint>, rcpoint is <$rcpoint>"
161 1.1 christos echo "betapoint must be 0 and rcpoint must be empty to start the"
162 1.1 christos echo "beta cycle."
163 1.1 christos exit 1
164 1.1 christos ;;
165 1.1 christos esac
166 1.1 christos ;;
167 1.1 christos beta)
168 1.1 christos case "$betapoint::$rcpoint" in
169 1.1 christos [1-9]*::*)
170 1.1 christos bp=0
171 1.1 christos bbp=1
172 1.1 christos ;;
173 1.1 christos 0::) echo "betapoint is 0, rcpoint emtpy, and prerelease is beta."
174 1.1 christos echo "You probably intended prerelease= (that is, empty). It"
175 1.1 christos echo "will then be changed to beta by this script, starting the"
176 1.1 christos echo "first beta for the next point release."
177 1.1 christos exit 1
178 1.1 christos ;;
179 1.1 christos *)
180 1.1 christos bp=0
181 1.1 christos bbp=1
182 1.1 christos ;;
183 1.1 christos esac
184 1.1 christos case "$rcpoint" in
185 1.1 christos [Gg][Oo])
186 1.1 christos echo "prerelease is beta, rcpoint is GO, disallowed."
187 1.1 christos echo "rcpoint GO is allowed only when prerelease is RC or empty."
188 1.1 christos exit 1
189 1.1 christos ;;
190 1.1 christos esac
191 1.1 christos ;;
192 1.1 christos rc|RC)
193 1.1 christos case "$rcpoint" in
194 1.1 christos '')
195 1.1 christos case "$betapoint" in
196 1.1 christos 0) # bp=1
197 1.1 christos ;;
198 1.1 christos *) bp=0
199 1.1 christos ;;
200 1.1 christos esac
201 1.1 christos crcp=i
202 1.1 christos ;;
203 1.1 christos [1-9]*)
204 1.1 christos bp=0
205 1.1 christos crcp=i
206 1.1 christos ;;
207 1.1 christos [Gg][Oo])
208 1.1 christos bp=0
209 1.1 christos crcp=z
210 1.1 christos setpr=1
211 1.1 christos newpr=
212 1.1 christos ;;
213 1.1 christos *) echo "Unexpected value for 'rcpoint' <$rcpoint>!"
214 1.1 christos exit 1
215 1.1 christos ;;
216 1.1 christos esac
217 1.1 christos ;;
218 1.1 christos *)
219 1.1 christos echo "prerelease <$prerelease> unexpected"
220 1.1 christos exit 1
221 1.1 christos ;;
222 1.1 christos esac
223 1.1 christos ;;
224 1.1 christos *) echo "impossible: repo <$repo>!"
225 1.1 christos exit 1
226 1.1 christos ;;
227 1.1 christos esac
228 1.1 christos
229 1.1.1.2 christos case "$repo::$bp::$point" in
230 1.1.1.2 christos *::0::*)
231 1.1 christos newpoint=$point
232 1.1 christos ;;
233 1.1.1.2 christos dev::1::0)
234 1.1.1.2 christos newpoint=`expr $point + 1`
235 1.1.1.2 christos ;;
236 1.1.1.2 christos *::1::[1-9]*)
237 1.1 christos newpoint=`expr $point + 1`
238 1.1 christos ;;
239 1.1.1.2 christos dev::1::)
240 1.1.1.2 christos newpoint=0
241 1.1.1.2 christos ;;
242 1.1.1.2 christos stable::1::)
243 1.1 christos newpoint=1
244 1.1 christos ;;
245 1.1.1.2 christos *::1::[Nn][Ee][Ww])
246 1.1 christos newpoint=
247 1.1 christos ;;
248 1.1.1.2 christos *) echo "Unexpected value for 'point' <$point>! (repo::bp::point is $repo::$bp::$point)"
249 1.1 christos exit 1
250 1.1 christos ;;
251 1.1 christos esac
252 1.1 christos
253 1.1 christos case "$bbp::$betapoint" in
254 1.1 christos 0::*)
255 1.1 christos newbetapoint=$betapoint
256 1.1 christos ;;
257 1.1 christos 1::[0-9]*)
258 1.1 christos newbetapoint=`expr $betapoint + 1`
259 1.1 christos ;;
260 1.1 christos *) echo "Unexpected value for 'betapoint' <$betapoint>!"
261 1.1 christos exit 1
262 1.1 christos ;;
263 1.1 christos esac
264 1.1 christos
265 1.1 christos case "$crcp::$rcpoint" in
266 1.1 christos n::*)
267 1.1 christos newrcpoint=$rcpoint
268 1.1 christos ;;
269 1.1 christos i::)
270 1.1 christos newrcpoint=1
271 1.1 christos ;;
272 1.1 christos i::[0-9]*)
273 1.1 christos newrcpoint=`expr $rcpoint + 1`
274 1.1 christos ;;
275 1.1 christos z::*)
276 1.1 christos newrcpoint=
277 1.1.1.3 christos case "$repo" in
278 1.1.1.3 christos dev)
279 1.1.1.3 christos newbetapoint=0
280 1.1.1.3 christos ;;
281 1.1.1.3 christos stable)
282 1.1.1.3 christos newbetapoint=
283 1.1.1.3 christos ;;
284 1.1.1.3 christos *)
285 1.1.1.3 christos echo "crcp::rcpoint - bogus repo <$repo>"
286 1.1.1.3 christos exit 1
287 1.1.1.3 christos ;;
288 1.1.1.3 christos esac
289 1.1 christos ;;
290 1.1 christos *) echo "Unexpected value for 'crcp::rcpoint' <$crcp::$rcpoint>!"
291 1.1 christos exit 1
292 1.1 christos ;;
293 1.1 christos esac
294 1.1 christos
295 1.1 christos case "$setpr" in
296 1.1 christos 0)
297 1.1 christos newpr=$prerelease
298 1.1 christos esac
299 1.1 christos
300 1.1 christos # display results
301 1.1 christos printf "prerelease $prerelease"
302 1.1 christos case "$newpr" in
303 1.1 christos $prerelease)
304 1.1 christos printf "\n"
305 1.1 christos ;;
306 1.1 christos *) printf " -> $newpr\n"
307 1.1 christos ;;
308 1.1 christos esac
309 1.1 christos printf "point $point"
310 1.1 christos case "$newpoint" in
311 1.1 christos $point)
312 1.1 christos printf "\n"
313 1.1 christos ;;
314 1.1 christos *) printf " -> $newpoint\n"
315 1.1 christos ;;
316 1.1 christos esac
317 1.1 christos printf "betapoint $betapoint"
318 1.1 christos case "$newbetapoint" in
319 1.1 christos $betapoint)
320 1.1 christos printf "\n"
321 1.1 christos ;;
322 1.1 christos *) printf " -> $newbetapoint\n"
323 1.1 christos ;;
324 1.1 christos esac
325 1.1 christos printf "rcpoint $rcpoint"
326 1.1 christos case "$newrcpoint" in
327 1.1 christos $rcpoint)
328 1.1 christos printf "\n"
329 1.1 christos ;;
330 1.1 christos *) printf " -> $newrcpoint\n"
331 1.1 christos ;;
332 1.1 christos esac
333 1.1 christos
334 1.1 christos printf "Previous version: "
335 1.1 christos scripts/build/VersionName
336 1.1 christos
337 1.1 christos # apply packageinfo.sh changes
338 1.1 christos
339 1.1 christos sed -e "s/^point=.*/point=$newpoint/" \
340 1.1 christos -e "s/^betapoint=.*/betapoint=$newbetapoint/" \
341 1.1 christos -e "s/^rcpoint=.*/rcpoint=$newrcpoint/" \
342 1.1 christos -e "s/^prerelease=.*/prerelease=$newpr/" \
343 1.1 christos < packageinfo.sh \
344 1.1 christos > packageinfo.sh+
345 1.1 christos
346 1.1 christos case "$test" in
347 1.1 christos 0)
348 1.1 christos mv packageinfo.sh+ packageinfo.sh
349 1.1 christos printf "Updated version: "
350 1.1 christos scripts/build/VersionName
351 1.1 christos ;;
352 1.1 christos *)
353 1.1 christos printf "Next version would be: "
354 1.1 christos scripts/build/VersionName -p ./packageinfo.sh+
355 1.1 christos rm packageinfo.sh+
356 1.1 christos ;;
357 1.1 christos esac
358