UpdatePoint revision 290001
1251876Speter#! /bin/sh
2251876Speter
3251876Speter# showusage is set to 1 on any command-line syntax error
4251876Spetershowusage=0
5251876Speter# are we playing by stable or dev rules?
6251876Speterrepo=
7251876Speter# test is set to 1 if -t/--test is given to prevent modifications
8251876Spetertest=0
9251876Speter
10251876Spetercase "$#" in
11251876Speter 1) repo=$1
12251876Speter    ;;
13251876Speter 2) repo=$2
14251876Speter    case $1 in
15251876Speter     -t|--test)
16251876Speter	test=1
17251876Speter	;;
18362181Sdim     *)
19362181Sdim	showusage=1
20251876Speter	;;
21251876Speter    esac
22251876Speter    ;;
23251876Speter *) showusage=1
24251876Speter    ;;
25251876Speteresac
26251876Speter
27251876Spetercase "$repo" in
28251876Speter dev|stable)
29251876Speter    ;;
30251876Speter '')
31251876Speter    showusage=1
32251876Speter    ;;
33251876Speter *) echo "Unexpected repo type: <$repo>!"
34251876Speter    showusage=1
35251876Speter    ;;
36251876Speteresac
37251876Speter
38251876Spetercase "$showusage" in
39251876Speter 1) echo "Usage: $0 [-t] <stable|dev>"
40251876Speter    echo "No changes are made to packageinfo.sh if -t is given."
41251876Speter    exit 1
42251876Speter    ;;
43251876Speteresac
44251876Speter
45362181Sdim
46251876Speterset -e
47251876Speter 
48251876Speter. ./packageinfo.sh
49251876Speter
50251876Spetercase "$repotype" in
51251876Speter $repo)
52251876Speter    ;;
53362181Sdim *) echo "You indicated repo type <$repo> but packageinfo.sh"
54251876Speter    echo "indicates <$repotype>."
55251876Speter    exit 1
56251876Speter    ;;
57251876Speteresac
58251876Speter
59251876Speterver_repo_mismatch=1
60251876Speter
61251876Spetercase "$minor" in
62251876Speter 1|3|5|7|9)
63251876Speter    case "$repo" in
64251876Speter     dev)
65251876Speter	ver_repo_mismatch=0
66251876Speter	;;
67251876Speter     stable)
68251876Speter	;;
69251876Speter    esac
70251876Speter    ;;
71251876Speter 0|2|4|6|8)
72251876Speter    case "$repo" in
73251876Speter     dev)
74251876Speter	;;
75251876Speter     stable)
76251876Speter	ver_repo_mismatch=0
77251876Speter	;;
78251876Speter    esac
79251876Speter    ;;
80251876Speteresac
81251876Speter
82251876Spetercase "$ver_repo_mismatch" in
83251876Speter 1) echo "Minor version <$minor> mismatches repotype <$repo>."
84251876Speter    exit 1
85251876Speter    ;;
86251876Speteresac
87251876Speter
88251876Speter# Do we want to bump the point?
89251876Speterbp=1
90251876Speter# Do we want to bump the beta point?
91251876Speterbbp=0
92251876Speter# Do we want to change the RC point? (n=no, z=empty rcpoint and zero
93251876Speter# betapoint, i=incr)
94251876Spetercrcp=n
95251876Speter# Do we want to change the prerelease value?
96251876Spetersetpr=0
97251876Speter
98251876Speter# for stable:
99251876Speter# if we are not in a beta or RC state, enter beta unless point is NEW.
100251876Speter# if we are in a beta state:
101251876Speter# - bump the beta point
102251876Speter# else if we are in an RC state:
103251876Speter# - if rcpoint is GO:
104251876Speter# - - set rcpoint= (empty)
105251876Speter# - - set prerelease= (empty)
106251876Speter# - - set betapoint=0
107251876Speter# - else
108251876Speter# - - if rcpoint==(empty)
109251876Speter# - - - (bump-point) and set rcpoint to 0 (and fall thru, so -RC1 is first)
110251876Speter# - - bump the RC point
111251876Speter
112251876Speter# for dev, we only want to bump-point and possibly clear prerelease, 
113251876Speter# but we do not modify rcpoint nor betapoint.
114251876Speter
115251876Spetercase "$repo" in
116251876Speter dev)
117251876Speter    case "$point" in
118251876Speter     [Nn][Ee][Ww])
119251876Speter	crcp=z
120251876Speter	;;
121251876Speter     *)
122251876Speter	# crcp=n
123251876Speter	;;
124    esac
125    # bp=1
126    ;;
127 stable)
128    case "$prerelease" in
129     '')
130	case "$betapoint::$rcpoint::$point" in
131	 *::*::NEW)
132	    # new minor release (no p)
133	    crcp=z
134	    # bp=1
135	    ;;
136	 0::::*)
137	    # start of first beta cycle for the next point release
138	    setpr=1
139	    newpr=beta
140	    # bp=1
141	    bbp=1
142	    ;;
143	 0::[Gg][Oo]::*)
144	    # skip all -beta and -RC prereleases to the next point.
145	    crcp=z
146	    setpr=1
147	    newpr=
148	    # bp=1
149	    # bbp=0
150	    ;;
151	 *) echo "betapoint is <$betapoint>, rcpoint is <$rcpoint>"
152	    echo "betapoint must be 0 and rcpoint must be empty to start the"
153	    echo "beta cycle."
154	    exit 1
155	    ;;
156	esac
157	;;
158     beta)
159	case "$betapoint::$rcpoint" in
160	 [1-9]*::*)
161	    bp=0
162	    bbp=1
163	    ;;
164	 0::) echo "betapoint is 0, rcpoint emtpy, and prerelease is beta."
165	    echo "You probably intended prerelease=  (that is, empty).  It"
166	    echo "will then be changed to beta by this script, starting the"
167	    echo "first beta for the next point release."
168	    exit 1
169	    ;;
170	 *)
171	    bp=0
172	    bbp=1
173	    ;;
174	esac
175	case "$rcpoint" in
176	 [Gg][Oo])
177	    echo "prerelease is beta, rcpoint is GO, disallowed."
178	    echo "rcpoint GO is allowed only when prerelease is RC or empty."
179	    exit 1
180	    ;;
181	esac
182	;;
183     rc|RC)
184	case "$rcpoint" in
185	 '')
186	    case "$betapoint" in
187	     0) # bp=1
188		;;
189	     *) bp=0
190		;;
191	    esac
192	    crcp=i
193	    ;;
194	 [1-9]*)
195	    bp=0
196	    crcp=i
197	    ;;
198	 [Gg][Oo])
199	    bp=0
200	    crcp=z
201	    setpr=1
202	    newpr=
203	    ;;
204	 *) echo "Unexpected value for 'rcpoint' <$rcpoint>!"
205	    exit 1
206	    ;;
207	esac
208	;;
209     *)
210	echo "prerelease <$prerelease> unexpected"
211	exit 1
212	;;
213    esac
214    ;;
215 *) echo "impossible: repo <$repo>!"
216    exit 1
217    ;;
218esac
219
220case "$repo::$bp::$point" in
221 *::0::*)
222    newpoint=$point
223    ;;
224 dev::1::0)
225    newpoint=`expr $point + 1`
226    ;;
227 *::1::[1-9]*)
228    newpoint=`expr $point + 1`
229    ;;
230 dev::1::)
231    newpoint=0
232    ;;
233 stable::1::)
234    newpoint=1
235    ;;
236 *::1::[Nn][Ee][Ww])
237    newpoint=
238    ;;
239 *) echo "Unexpected value for 'point' <$point>! (repo::bp::point is $repo::$bp::$point)"
240    exit 1
241    ;;
242esac
243
244case "$bbp::$betapoint" in
245 0::*)
246    newbetapoint=$betapoint
247    ;;
248 1::[0-9]*)
249    newbetapoint=`expr $betapoint + 1`
250    ;;
251 *) echo "Unexpected value for 'betapoint' <$betapoint>!"
252    exit 1
253    ;;
254esac
255
256case "$crcp::$rcpoint" in
257 n::*)
258    newrcpoint=$rcpoint
259    ;;
260 i::)
261    newrcpoint=1
262    ;;
263 i::[0-9]*)
264    newrcpoint=`expr $rcpoint + 1`
265    ;;
266 z::*)
267    newrcpoint=
268    newbetapoint=0
269    ;;
270 *) echo "Unexpected value for 'crcp::rcpoint' <$crcp::$rcpoint>!"
271    exit 1
272    ;;
273esac
274
275case "$setpr" in
276 0)
277    newpr=$prerelease
278esac
279
280# display results
281printf "prerelease		$prerelease"
282case "$newpr" in
283 $prerelease)
284    printf "\n"
285    ;;
286 *) printf " -> $newpr\n"
287    ;;
288esac
289printf "point			$point"
290case "$newpoint" in
291 $point)
292    printf "\n"
293    ;;
294 *) printf " -> $newpoint\n"
295    ;;
296esac
297printf "betapoint		$betapoint"
298case "$newbetapoint" in
299 $betapoint)
300    printf "\n"
301    ;;
302 *) printf " -> $newbetapoint\n"
303    ;;
304esac
305printf "rcpoint			$rcpoint"
306case "$newrcpoint" in
307 $rcpoint)
308    printf "\n"
309    ;;
310 *) printf " -> $newrcpoint\n"
311    ;;
312esac
313
314printf "Previous version: "
315scripts/build/VersionName
316
317# apply packageinfo.sh changes
318
319sed -e "s/^point=.*/point=$newpoint/"			\
320    -e "s/^betapoint=.*/betapoint=$newbetapoint/"	\
321    -e "s/^rcpoint=.*/rcpoint=$newrcpoint/"		\
322    -e "s/^prerelease=.*/prerelease=$newpr/"		\
323	< packageinfo.sh					\
324	> packageinfo.sh+
325
326case "$test" in
327 0)
328    mv packageinfo.sh+ packageinfo.sh
329    printf "Updated version: "
330    scripts/build/VersionName
331    ;;
332 *)
333    printf "Next version would be: "
334    scripts/build/VersionName -p ./packageinfo.sh+
335    rm packageinfo.sh+
336    ;;
337esac
338