358 lines
6.1 KiB
Bash
Executable File
358 lines
6.1 KiB
Bash
Executable File
#! /bin/sh
|
|
|
|
# showusage is set to 1 on any command-line syntax error
|
|
showusage=0
|
|
# are we playing by stable or dev rules?
|
|
repo=
|
|
# test is set to 1 if -t/--test is given to prevent modifications
|
|
test=0
|
|
|
|
case "$#" in
|
|
1) repo=$1
|
|
;;
|
|
2) repo=$2
|
|
case $1 in
|
|
-t|--test)
|
|
test=1
|
|
;;
|
|
*)
|
|
showusage=1
|
|
;;
|
|
esac
|
|
;;
|
|
*) showusage=1
|
|
;;
|
|
esac
|
|
|
|
case "$repo" in
|
|
dev|stable)
|
|
;;
|
|
'')
|
|
showusage=1
|
|
;;
|
|
*) echo "Unexpected repo type: <$repo>!"
|
|
showusage=1
|
|
;;
|
|
esac
|
|
|
|
case "$showusage" in
|
|
1) echo "Usage: $0 [-t] <stable|dev>"
|
|
echo "No changes are made to packageinfo.sh if -t is given."
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
|
|
set -e
|
|
|
|
. ./packageinfo.sh
|
|
|
|
case "$repotype" in
|
|
$repo)
|
|
;;
|
|
*) echo "You indicated repo type <$repo> but packageinfo.sh"
|
|
echo "indicates <$repotype>."
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
ver_repo_mismatch=1
|
|
|
|
case "$minor" in
|
|
1|3|5|7|9)
|
|
case "$repo" in
|
|
dev)
|
|
ver_repo_mismatch=0
|
|
;;
|
|
stable)
|
|
;;
|
|
esac
|
|
;;
|
|
0|2|4|6|8)
|
|
case "$repo" in
|
|
dev)
|
|
;;
|
|
stable)
|
|
ver_repo_mismatch=0
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
case "$ver_repo_mismatch" in
|
|
1) echo "Minor version <$minor> mismatches repotype <$repo>."
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# Do we want to bump the point?
|
|
bp=1
|
|
# Do we want to bump the beta point?
|
|
bbp=0
|
|
# Do we want to change the RC point? (n=no, z=empty rcpoint and zero
|
|
# betapoint, i=incr)
|
|
crcp=n
|
|
# Do we want to change the prerelease value?
|
|
setpr=0
|
|
|
|
# for stable:
|
|
# if we are not in a beta or RC state, enter beta unless point is NEW.
|
|
# if we are in a beta state:
|
|
# - bump the beta point
|
|
# else if we are in an RC state:
|
|
# - if rcpoint is GO:
|
|
# - - set rcpoint= (empty)
|
|
# - - set prerelease= (empty)
|
|
# - - set betapoint=0
|
|
# - else
|
|
# - - if rcpoint==(empty)
|
|
# - - - (bump-point) and set rcpoint to 0 (and fall thru, so -RC1 is first)
|
|
# - - bump the RC point
|
|
|
|
# for dev, we only want to bump-point and possibly clear prerelease,
|
|
# but we do not modify rcpoint nor betapoint.
|
|
|
|
case "$repo" in
|
|
dev)
|
|
case "$point" in
|
|
[Nn][Ee][Ww])
|
|
crcp=z
|
|
;;
|
|
*)
|
|
# crcp=n
|
|
;;
|
|
esac
|
|
# bp=1
|
|
;;
|
|
stable)
|
|
case "$prerelease" in
|
|
'')
|
|
# echo "Checking <$betapoint::$rcpoint::$point>"
|
|
case "$betapoint::$rcpoint::$point" in
|
|
*::*::NEW)
|
|
# new minor release (no p)
|
|
crcp=z
|
|
# bp=1
|
|
;;
|
|
0::::*)
|
|
# start of first beta cycle for the next point release
|
|
setpr=1
|
|
newpr=beta
|
|
# bp=1
|
|
bbp=1
|
|
;;
|
|
0::[Gg][Oo]::*)
|
|
# skip all -beta and -RC prereleases to the next point.
|
|
crcp=z
|
|
setpr=1
|
|
newpr=
|
|
# bp=1
|
|
# bbp=0
|
|
;;
|
|
::[Gg][Oo]::*)
|
|
# echo "Good - betapoint is empty. Look in $0 and figure out what's going on here."
|
|
crcp=z
|
|
;;
|
|
*::[Gg][Oo]::*)
|
|
echo "betapoint is NOT empty. Look in $0 and figure out what's going on here."
|
|
test=1
|
|
;;
|
|
*) echo "betapoint is <$betapoint>, rcpoint is <$rcpoint>"
|
|
echo "betapoint must be 0 and rcpoint must be empty to start the"
|
|
echo "beta cycle."
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
beta)
|
|
case "$betapoint::$rcpoint" in
|
|
[1-9]*::*)
|
|
bp=0
|
|
bbp=1
|
|
;;
|
|
0::) echo "betapoint is 0, rcpoint emtpy, and prerelease is beta."
|
|
echo "You probably intended prerelease= (that is, empty). It"
|
|
echo "will then be changed to beta by this script, starting the"
|
|
echo "first beta for the next point release."
|
|
exit 1
|
|
;;
|
|
*)
|
|
bp=0
|
|
bbp=1
|
|
;;
|
|
esac
|
|
case "$rcpoint" in
|
|
[Gg][Oo])
|
|
echo "prerelease is beta, rcpoint is GO, disallowed."
|
|
echo "rcpoint GO is allowed only when prerelease is RC or empty."
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
rc|RC)
|
|
case "$rcpoint" in
|
|
'')
|
|
case "$betapoint" in
|
|
0) # bp=1
|
|
;;
|
|
*) bp=0
|
|
;;
|
|
esac
|
|
crcp=i
|
|
;;
|
|
[1-9]*)
|
|
bp=0
|
|
crcp=i
|
|
;;
|
|
[Gg][Oo])
|
|
bp=0
|
|
crcp=z
|
|
setpr=1
|
|
newpr=
|
|
;;
|
|
*) echo "Unexpected value for 'rcpoint' <$rcpoint>!"
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
echo "prerelease <$prerelease> unexpected"
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
*) echo "impossible: repo <$repo>!"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case "$repo::$bp::$point" in
|
|
*::0::*)
|
|
newpoint=$point
|
|
;;
|
|
dev::1::0)
|
|
newpoint=`expr $point + 1`
|
|
;;
|
|
*::1::[1-9]*)
|
|
newpoint=`expr $point + 1`
|
|
;;
|
|
dev::1::)
|
|
newpoint=0
|
|
;;
|
|
stable::1::)
|
|
newpoint=1
|
|
;;
|
|
*::1::[Nn][Ee][Ww])
|
|
newpoint=
|
|
;;
|
|
*) echo "Unexpected value for 'point' <$point>! (repo::bp::point is $repo::$bp::$point)"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case "$bbp::$betapoint" in
|
|
0::*)
|
|
newbetapoint=$betapoint
|
|
;;
|
|
1::[0-9]*)
|
|
newbetapoint=`expr $betapoint + 1`
|
|
;;
|
|
*) echo "Unexpected value for 'betapoint' <$betapoint>!"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case "$crcp::$rcpoint" in
|
|
n::*)
|
|
newrcpoint=$rcpoint
|
|
;;
|
|
i::)
|
|
newrcpoint=1
|
|
;;
|
|
i::[0-9]*)
|
|
newrcpoint=`expr $rcpoint + 1`
|
|
;;
|
|
z::*)
|
|
newrcpoint=
|
|
case "$repo" in
|
|
dev)
|
|
newbetapoint=0
|
|
;;
|
|
stable)
|
|
newbetapoint=
|
|
;;
|
|
*)
|
|
echo "crcp::rcpoint - bogus repo <$repo>"
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
*) echo "Unexpected value for 'crcp::rcpoint' <$crcp::$rcpoint>!"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case "$setpr" in
|
|
0)
|
|
newpr=$prerelease
|
|
esac
|
|
|
|
# display results
|
|
printf "prerelease $prerelease"
|
|
case "$newpr" in
|
|
$prerelease)
|
|
printf "\n"
|
|
;;
|
|
*) printf " -> $newpr\n"
|
|
;;
|
|
esac
|
|
printf "point $point"
|
|
case "$newpoint" in
|
|
$point)
|
|
printf "\n"
|
|
;;
|
|
*) printf " -> $newpoint\n"
|
|
;;
|
|
esac
|
|
printf "betapoint $betapoint"
|
|
case "$newbetapoint" in
|
|
$betapoint)
|
|
printf "\n"
|
|
;;
|
|
*) printf " -> $newbetapoint\n"
|
|
;;
|
|
esac
|
|
printf "rcpoint $rcpoint"
|
|
case "$newrcpoint" in
|
|
$rcpoint)
|
|
printf "\n"
|
|
;;
|
|
*) printf " -> $newrcpoint\n"
|
|
;;
|
|
esac
|
|
|
|
printf "Previous version: "
|
|
scripts/build/VersionName
|
|
|
|
# apply packageinfo.sh changes
|
|
|
|
sed -e "s/^point=.*/point=$newpoint/" \
|
|
-e "s/^betapoint=.*/betapoint=$newbetapoint/" \
|
|
-e "s/^rcpoint=.*/rcpoint=$newrcpoint/" \
|
|
-e "s/^prerelease=.*/prerelease=$newpr/" \
|
|
< packageinfo.sh \
|
|
> packageinfo.sh+
|
|
|
|
case "$test" in
|
|
0)
|
|
mv packageinfo.sh+ packageinfo.sh
|
|
printf "Updated version: "
|
|
scripts/build/VersionName
|
|
;;
|
|
*)
|
|
printf "Next version would be: "
|
|
scripts/build/VersionName -p ./packageinfo.sh+
|
|
rm packageinfo.sh+
|
|
;;
|
|
esac
|