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 220280849Scycase "$repo::$bp::$point" in 221280849Scy *::0::*) 222275970Scy newpoint=$point 223275970Scy ;; 224280849Scy dev::1::0) 225275970Scy newpoint=`expr $point + 1` 226275970Scy ;; 227280849Scy *::1::[1-9]*) 228280849Scy newpoint=`expr $point + 1` 229280849Scy ;; 230280849Scy dev::1::) 231280849Scy newpoint=0 232280849Scy ;; 233280849Scy stable::1::) 234275970Scy newpoint=1 235275970Scy ;; 236280849Scy *::1::[Nn][Ee][Ww]) 237275970Scy newpoint= 238275970Scy ;; 239280849Scy *) echo "Unexpected value for 'point' <$point>! (repo::bp::point is $repo::$bp::$point)" 240275970Scy exit 1 241275970Scy ;; 242275970Scyesac 243275970Scy 244275970Scycase "$bbp::$betapoint" in 245275970Scy 0::*) 246275970Scy newbetapoint=$betapoint 247275970Scy ;; 248275970Scy 1::[0-9]*) 249275970Scy newbetapoint=`expr $betapoint + 1` 250275970Scy ;; 251275970Scy *) echo "Unexpected value for 'betapoint' <$betapoint>!" 252275970Scy exit 1 253275970Scy ;; 254275970Scyesac 255275970Scy 256275970Scycase "$crcp::$rcpoint" in 257275970Scy n::*) 258275970Scy newrcpoint=$rcpoint 259275970Scy ;; 260275970Scy i::) 261275970Scy newrcpoint=1 262275970Scy ;; 263275970Scy i::[0-9]*) 264275970Scy newrcpoint=`expr $rcpoint + 1` 265275970Scy ;; 266275970Scy z::*) 267275970Scy newrcpoint= 268275970Scy newbetapoint=0 269275970Scy ;; 270275970Scy *) echo "Unexpected value for 'crcp::rcpoint' <$crcp::$rcpoint>!" 271275970Scy exit 1 272275970Scy ;; 273275970Scyesac 274275970Scy 275275970Scycase "$setpr" in 276275970Scy 0) 277275970Scy newpr=$prerelease 278275970Scyesac 279275970Scy 280275970Scy# display results 281275970Scyprintf "prerelease $prerelease" 282275970Scycase "$newpr" in 283275970Scy $prerelease) 284275970Scy printf "\n" 285275970Scy ;; 286275970Scy *) printf " -> $newpr\n" 287275970Scy ;; 288275970Scyesac 289275970Scyprintf "point $point" 290275970Scycase "$newpoint" in 291275970Scy $point) 292275970Scy printf "\n" 293275970Scy ;; 294275970Scy *) printf " -> $newpoint\n" 295275970Scy ;; 296275970Scyesac 297275970Scyprintf "betapoint $betapoint" 298275970Scycase "$newbetapoint" in 299275970Scy $betapoint) 300275970Scy printf "\n" 301275970Scy ;; 302275970Scy *) printf " -> $newbetapoint\n" 303275970Scy ;; 304275970Scyesac 305275970Scyprintf "rcpoint $rcpoint" 306275970Scycase "$newrcpoint" in 307275970Scy $rcpoint) 308275970Scy printf "\n" 309275970Scy ;; 310275970Scy *) printf " -> $newrcpoint\n" 311275970Scy ;; 312275970Scyesac 313275970Scy 314275970Scyprintf "Previous version: " 315275970Scyscripts/build/VersionName 316275970Scy 317275970Scy# apply packageinfo.sh changes 318275970Scy 319275970Scysed -e "s/^point=.*/point=$newpoint/" \ 320275970Scy -e "s/^betapoint=.*/betapoint=$newbetapoint/" \ 321275970Scy -e "s/^rcpoint=.*/rcpoint=$newrcpoint/" \ 322275970Scy -e "s/^prerelease=.*/prerelease=$newpr/" \ 323275970Scy < packageinfo.sh \ 324275970Scy > packageinfo.sh+ 325275970Scy 326275970Scycase "$test" in 327275970Scy 0) 328275970Scy mv packageinfo.sh+ packageinfo.sh 329275970Scy printf "Updated version: " 330275970Scy scripts/build/VersionName 331275970Scy ;; 332275970Scy *) 333275970Scy printf "Next version would be: " 334275970Scy scripts/build/VersionName -p ./packageinfo.sh+ 335275970Scy rm packageinfo.sh+ 336275970Scy ;; 337275970Scyesac 338