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