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