UpdatePoint revision 275970
1275970Scy#! /bin/sh
2275970Scy
3275970Scy# showusage is set to 1 on any command-line syntax error
4275970Scyshowusage=0
5275970Scy# are we playing by stable or dev rules?
6275970Scyrepo=
7275970Scy# test is set to 1 if -t/--test is given to prevent modifications
8275970Scytest=0
9275970Scy
10275970Scycase "$#" in
11275970Scy 1) repo=$1
12275970Scy    ;;
13275970Scy 2) repo=$2
14275970Scy    case $1 in
15275970Scy     -t|--test)
16275970Scy	test=1
17275970Scy	;;
18275970Scy     *)
19275970Scy	showusage=1
20275970Scy	;;
21275970Scy    esac
22275970Scy    ;;
23275970Scy *) showusage=1
24275970Scy    ;;
25275970Scyesac
26275970Scy
27275970Scycase "$repo" in
28275970Scy dev|stable)
29275970Scy    ;;
30275970Scy '')
31275970Scy    showusage=1
32275970Scy    ;;
33275970Scy *) echo "Unexpected repo type: <$repo>!"
34275970Scy    showusage=1
35275970Scy    ;;
36275970Scyesac
37275970Scy
38275970Scycase "$showusage" in
39275970Scy 1) echo "Usage: $0 [-t] <stable|dev>"
40275970Scy    echo "No changes are made to packageinfo.sh if -t is given."
41275970Scy    exit 1
42275970Scy    ;;
43275970Scyesac
44275970Scy
45275970Scy
46275970Scyset -e
47275970Scy 
48275970Scy. ./packageinfo.sh
49275970Scy
50275970Scycase "$repotype" in
51275970Scy $repo)
52275970Scy    ;;
53275970Scy *) echo "You indicated repo type <$repo> but packageinfo.sh"
54275970Scy    echo "indicates <$repotype>."
55275970Scy    exit 1
56275970Scy    ;;
57275970Scyesac
58275970Scy
59275970Scyver_repo_mismatch=1
60275970Scy
61275970Scycase "$minor" in
62275970Scy 1|3|5|7|9)
63275970Scy    case "$repo" in
64275970Scy     dev)
65275970Scy	ver_repo_mismatch=0
66275970Scy	;;
67275970Scy     stable)
68275970Scy	;;
69275970Scy    esac
70275970Scy    ;;
71275970Scy 0|2|4|6|8)
72275970Scy    case "$repo" in
73275970Scy     dev)
74275970Scy	;;
75275970Scy     stable)
76275970Scy	ver_repo_mismatch=0
77275970Scy	;;
78275970Scy    esac
79275970Scy    ;;
80275970Scyesac
81275970Scy
82275970Scycase "$ver_repo_mismatch" in
83275970Scy 1) echo "Minor version <$minor> mismatches repotype <$repo>."
84275970Scy    exit 1
85275970Scy    ;;
86275970Scyesac
87275970Scy
88275970Scy# Do we want to bump the point?
89275970Scybp=1
90275970Scy# Do we want to bump the beta point?
91275970Scybbp=0
92275970Scy# Do we want to change the RC point? (n=no, z=empty rcpoint and zero
93275970Scy# betapoint, i=incr)
94275970Scycrcp=n
95275970Scy# Do we want to change the prerelease value?
96275970Scysetpr=0
97275970Scy
98275970Scy# for stable:
99275970Scy# if we are not in a beta or RC state, enter beta unless point is NEW.
100275970Scy# if we are in a beta state:
101275970Scy# - bump the beta point
102275970Scy# else if we are in an RC state:
103275970Scy# - if rcpoint is GO:
104275970Scy# - - set rcpoint= (empty)
105275970Scy# - - set prerelease= (empty)
106275970Scy# - - set betapoint=0
107275970Scy# - else
108275970Scy# - - if rcpoint==(empty)
109275970Scy# - - - (bump-point) and set rcpoint to 0 (and fall thru, so -RC1 is first)
110275970Scy# - - bump the RC point
111275970Scy
112275970Scy# for dev, we only want to bump-point and possibly clear prerelease, 
113275970Scy# but we do not modify rcpoint nor betapoint.
114275970Scy
115275970Scycase "$repo" in
116275970Scy dev)
117275970Scy    case "$point" in
118275970Scy     [Nn][Ee][Ww])
119275970Scy	crcp=z
120275970Scy	;;
121275970Scy     *)
122275970Scy	# crcp=n
123275970Scy	;;
124275970Scy    esac
125275970Scy    # bp=1
126275970Scy    ;;
127275970Scy stable)
128275970Scy    case "$prerelease" in
129275970Scy     '')
130275970Scy	case "$betapoint::$rcpoint::$point" in
131275970Scy	 *::*::NEW)
132275970Scy	    # new minor release (no p)
133275970Scy	    crcp=z
134275970Scy	    # bp=1
135275970Scy	    ;;
136275970Scy	 0::::*)
137275970Scy	    # start of first beta cycle for the next point release
138275970Scy	    setpr=1
139275970Scy	    newpr=beta
140275970Scy	    # bp=1
141275970Scy	    bbp=1
142275970Scy	    ;;
143275970Scy	 0::[Gg][Oo]::*)
144275970Scy	    # skip all -beta and -RC prereleases to the next point.
145275970Scy	    crcp=z
146275970Scy	    setpr=1
147275970Scy	    newpr=
148275970Scy	    # bp=1
149275970Scy	    # bbp=0
150275970Scy	    ;;
151275970Scy	 *) echo "betapoint is <$betapoint>, rcpoint is <$rcpoint>"
152275970Scy	    echo "betapoint must be 0 and rcpoint must be empty to start the"
153275970Scy	    echo "beta cycle."
154275970Scy	    exit 1
155275970Scy	    ;;
156275970Scy	esac
157275970Scy	;;
158275970Scy     beta)
159275970Scy	case "$betapoint::$rcpoint" in
160275970Scy	 [1-9]*::*)
161275970Scy	    bp=0
162275970Scy	    bbp=1
163275970Scy	    ;;
164275970Scy	 0::) echo "betapoint is 0, rcpoint emtpy, and prerelease is beta."
165275970Scy	    echo "You probably intended prerelease=  (that is, empty).  It"
166275970Scy	    echo "will then be changed to beta by this script, starting the"
167275970Scy	    echo "first beta for the next point release."
168275970Scy	    exit 1
169275970Scy	    ;;
170275970Scy	 *)
171275970Scy	    bp=0
172275970Scy	    bbp=1
173275970Scy	    ;;
174275970Scy	esac
175275970Scy	case "$rcpoint" in
176275970Scy	 [Gg][Oo])
177275970Scy	    echo "prerelease is beta, rcpoint is GO, disallowed."
178275970Scy	    echo "rcpoint GO is allowed only when prerelease is RC or empty."
179275970Scy	    exit 1
180275970Scy	    ;;
181275970Scy	esac
182275970Scy	;;
183275970Scy     rc|RC)
184275970Scy	case "$rcpoint" in
185275970Scy	 '')
186275970Scy	    case "$betapoint" in
187275970Scy	     0) # bp=1
188275970Scy		;;
189275970Scy	     *) bp=0
190275970Scy		;;
191275970Scy	    esac
192275970Scy	    crcp=i
193275970Scy	    ;;
194275970Scy	 [1-9]*)
195275970Scy	    bp=0
196275970Scy	    crcp=i
197275970Scy	    ;;
198275970Scy	 [Gg][Oo])
199275970Scy	    bp=0
200275970Scy	    crcp=z
201275970Scy	    setpr=1
202275970Scy	    newpr=
203275970Scy	    ;;
204275970Scy	 *) echo "Unexpected value for 'rcpoint' <$rcpoint>!"
205275970Scy	    exit 1
206275970Scy	    ;;
207275970Scy	esac
208275970Scy	;;
209275970Scy     *)
210275970Scy	echo "prerelease <$prerelease> unexpected"
211275970Scy	exit 1
212275970Scy	;;
213275970Scy    esac
214275970Scy    ;;
215275970Scy *) echo "impossible: repo <$repo>!"
216275970Scy    exit 1
217275970Scy    ;;
218275970Scyesac
219275970Scy
220275970Scycase "$bp::$point" in
221275970Scy 0::*)
222275970Scy    newpoint=$point
223275970Scy    ;;
224275970Scy 1::[1-9]*)
225275970Scy    newpoint=`expr $point + 1`
226275970Scy    ;;
227275970Scy 1::)
228275970Scy    newpoint=1
229275970Scy    ;;
230275970Scy 1::[Nn][Ee][Ww])
231275970Scy    newpoint=
232275970Scy    ;;
233275970Scy *) echo "Unexpected value for 'point' <$point>!"
234275970Scy    exit 1
235275970Scy    ;;
236275970Scyesac
237275970Scy
238275970Scycase "$bbp::$betapoint" in
239275970Scy 0::*)
240275970Scy    newbetapoint=$betapoint
241275970Scy    ;;
242275970Scy 1::[0-9]*)
243275970Scy    newbetapoint=`expr $betapoint + 1`
244275970Scy    ;;
245275970Scy *) echo "Unexpected value for 'betapoint' <$betapoint>!"
246275970Scy    exit 1
247275970Scy    ;;
248275970Scyesac
249275970Scy
250275970Scycase "$crcp::$rcpoint" in
251275970Scy n::*)
252275970Scy    newrcpoint=$rcpoint
253275970Scy    ;;
254275970Scy i::)
255275970Scy    newrcpoint=1
256275970Scy    ;;
257275970Scy i::[0-9]*)
258275970Scy    newrcpoint=`expr $rcpoint + 1`
259275970Scy    ;;
260275970Scy z::*)
261275970Scy    newrcpoint=
262275970Scy    newbetapoint=0
263275970Scy    ;;
264275970Scy *) echo "Unexpected value for 'crcp::rcpoint' <$crcp::$rcpoint>!"
265275970Scy    exit 1
266275970Scy    ;;
267275970Scyesac
268275970Scy
269275970Scycase "$setpr" in
270275970Scy 0)
271275970Scy    newpr=$prerelease
272275970Scyesac
273275970Scy
274275970Scy# display results
275275970Scyprintf "prerelease		$prerelease"
276275970Scycase "$newpr" in
277275970Scy $prerelease)
278275970Scy    printf "\n"
279275970Scy    ;;
280275970Scy *) printf " -> $newpr\n"
281275970Scy    ;;
282275970Scyesac
283275970Scyprintf "point			$point"
284275970Scycase "$newpoint" in
285275970Scy $point)
286275970Scy    printf "\n"
287275970Scy    ;;
288275970Scy *) printf " -> $newpoint\n"
289275970Scy    ;;
290275970Scyesac
291275970Scyprintf "betapoint		$betapoint"
292275970Scycase "$newbetapoint" in
293275970Scy $betapoint)
294275970Scy    printf "\n"
295275970Scy    ;;
296275970Scy *) printf " -> $newbetapoint\n"
297275970Scy    ;;
298275970Scyesac
299275970Scyprintf "rcpoint			$rcpoint"
300275970Scycase "$newrcpoint" in
301275970Scy $rcpoint)
302275970Scy    printf "\n"
303275970Scy    ;;
304275970Scy *) printf " -> $newrcpoint\n"
305275970Scy    ;;
306275970Scyesac
307275970Scy
308275970Scyprintf "Previous version: "
309275970Scyscripts/build/VersionName
310275970Scy
311275970Scy# apply packageinfo.sh changes
312275970Scy
313275970Scysed -e "s/^point=.*/point=$newpoint/"			\
314275970Scy    -e "s/^betapoint=.*/betapoint=$newbetapoint/"	\
315275970Scy    -e "s/^rcpoint=.*/rcpoint=$newrcpoint/"		\
316275970Scy    -e "s/^prerelease=.*/prerelease=$newpr/"		\
317275970Scy	< packageinfo.sh					\
318275970Scy	> packageinfo.sh+
319275970Scy
320275970Scycase "$test" in
321275970Scy 0)
322275970Scy    mv packageinfo.sh+ packageinfo.sh
323275970Scy    printf "Updated version: "
324275970Scy    scripts/build/VersionName
325275970Scy    ;;
326275970Scy *)
327275970Scy    printf "Next version would be: "
328275970Scy    scripts/build/VersionName -p ./packageinfo.sh+
329275970Scy    rm packageinfo.sh+
330275970Scy    ;;
331275970Scyesac
332