Annotation of embedaddon/ntp/scripts/UpdatePoint, revision 1.1

1.1     ! misho       1: #! /bin/sh
        !             2: 
        !             3: # showusage is set to 1 on any command-line syntax error
        !             4: showusage=0
        !             5: # are we playing by stable or dev rules?
        !             6: repo=
        !             7: # test is set to 1 if -t/--test is given to prevent modifications
        !             8: test=0
        !             9: 
        !            10: case "$#" in
        !            11:  1) repo=$1
        !            12:     ;;
        !            13:  2) repo=$2
        !            14:     case $1 in
        !            15:      -t|--test)
        !            16:        test=1
        !            17:        ;;
        !            18:      *)
        !            19:        showusage=1
        !            20:        ;;
        !            21:     esac
        !            22:     ;;
        !            23:  *) showusage=1
        !            24:     ;;
        !            25: esac
        !            26: 
        !            27: case "$repo" in
        !            28:  dev|stable)
        !            29:     ;;
        !            30:  '')
        !            31:     showusage=1
        !            32:     ;;
        !            33:  *) echo "Unexpected repo type: <$repo>!"
        !            34:     showusage=1
        !            35:     ;;
        !            36: esac
        !            37: 
        !            38: case "$showusage" in
        !            39:  1) echo "Usage: $0 [-t] <stable|dev>"
        !            40:     echo "No changes are made to packageinfo.sh if -t is given."
        !            41:     exit 1
        !            42:     ;;
        !            43: esac
        !            44: 
        !            45: 
        !            46: set -e
        !            47:  
        !            48: . ./packageinfo.sh
        !            49: 
        !            50: case "$repotype" in
        !            51:  $repo)
        !            52:     ;;
        !            53:  *) echo "You indicated repo type <$repo> but packageinfo.sh"
        !            54:     echo "indicates <$repotype>."
        !            55:     exit 1
        !            56:     ;;
        !            57: esac
        !            58: 
        !            59: ver_repo_mismatch=1
        !            60: 
        !            61: case "$minor" in
        !            62:  1|3|5|7|9)
        !            63:     case "$repo" in
        !            64:      dev)
        !            65:        ver_repo_mismatch=0
        !            66:        ;;
        !            67:      stable)
        !            68:        ;;
        !            69:     esac
        !            70:     ;;
        !            71:  0|2|4|6|8)
        !            72:     case "$repo" in
        !            73:      dev)
        !            74:        ;;
        !            75:      stable)
        !            76:        ver_repo_mismatch=0
        !            77:        ;;
        !            78:     esac
        !            79:     ;;
        !            80: esac
        !            81: 
        !            82: case "$ver_repo_mismatch" in
        !            83:  1) echo "Minor version <$minor> mismatches repotype <$repo>."
        !            84:     exit 1
        !            85:     ;;
        !            86: esac
        !            87: 
        !            88: # Do we want to bump the point?
        !            89: bp=1
        !            90: # Do we want to bump the beta point?
        !            91: bbp=0
        !            92: # Do we want to change the RC point? (n=no, z=empty rcpoint and zero
        !            93: # betapoint, i=incr)
        !            94: crcp=n
        !            95: # Do we want to change the prerelease value?
        !            96: setpr=0
        !            97: 
        !            98: # for stable:
        !            99: # if we are not in a beta or RC state, enter beta unless point is NEW.
        !           100: # if we are in a beta state:
        !           101: # - bump the beta point
        !           102: # else if we are in an RC state:
        !           103: # - if rcpoint is GO:
        !           104: # - - set rcpoint= (empty)
        !           105: # - - set prerelease= (empty)
        !           106: # - - set betapoint=0
        !           107: # - else
        !           108: # - - if rcpoint==(empty)
        !           109: # - - - (bump-point) and set rcpoint to 0 (and fall thru, so -RC1 is first)
        !           110: # - - bump the RC point
        !           111: 
        !           112: # for dev, we only want to bump-point and possibly clear prerelease, 
        !           113: # but we do not modify rcpoint nor betapoint.
        !           114: 
        !           115: case "$repo" in
        !           116:  dev)
        !           117:     case "$point" in
        !           118:      [Nn][Ee][Ww])
        !           119:        crcp=z
        !           120:        ;;
        !           121:      *)
        !           122:        # crcp=n
        !           123:        ;;
        !           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:     ;;
        !           218: esac
        !           219: 
        !           220: case "$bp::$point" in
        !           221:  0::*)
        !           222:     newpoint=$point
        !           223:     ;;
        !           224:  1::[1-9]*)
        !           225:     newpoint=`expr $point + 1`
        !           226:     ;;
        !           227:  1::)
        !           228:     newpoint=1
        !           229:     ;;
        !           230:  1::[Nn][Ee][Ww])
        !           231:     newpoint=
        !           232:     ;;
        !           233:  *) echo "Unexpected value for 'point' <$point>!"
        !           234:     exit 1
        !           235:     ;;
        !           236: esac
        !           237: 
        !           238: case "$bbp::$betapoint" in
        !           239:  0::*)
        !           240:     newbetapoint=$betapoint
        !           241:     ;;
        !           242:  1::[0-9]*)
        !           243:     newbetapoint=`expr $betapoint + 1`
        !           244:     ;;
        !           245:  *) echo "Unexpected value for 'betapoint' <$betapoint>!"
        !           246:     exit 1
        !           247:     ;;
        !           248: esac
        !           249: 
        !           250: case "$crcp::$rcpoint" in
        !           251:  n::*)
        !           252:     newrcpoint=$rcpoint
        !           253:     ;;
        !           254:  i::)
        !           255:     newrcpoint=1
        !           256:     ;;
        !           257:  i::[0-9]*)
        !           258:     newrcpoint=`expr $rcpoint + 1`
        !           259:     ;;
        !           260:  z::*)
        !           261:     newrcpoint=
        !           262:     newbetapoint=0
        !           263:     ;;
        !           264:  *) echo "Unexpected value for 'crcp::rcpoint' <$crcp::$rcpoint>!"
        !           265:     exit 1
        !           266:     ;;
        !           267: esac
        !           268: 
        !           269: case "$setpr" in
        !           270:  0)
        !           271:     newpr=$prerelease
        !           272: esac
        !           273: 
        !           274: # display results
        !           275: printf "prerelease             $prerelease"
        !           276: case "$newpr" in
        !           277:  $prerelease)
        !           278:     printf "\n"
        !           279:     ;;
        !           280:  *) printf " -> $newpr\n"
        !           281:     ;;
        !           282: esac
        !           283: printf "point                  $point"
        !           284: case "$newpoint" in
        !           285:  $point)
        !           286:     printf "\n"
        !           287:     ;;
        !           288:  *) printf " -> $newpoint\n"
        !           289:     ;;
        !           290: esac
        !           291: printf "betapoint              $betapoint"
        !           292: case "$newbetapoint" in
        !           293:  $betapoint)
        !           294:     printf "\n"
        !           295:     ;;
        !           296:  *) printf " -> $newbetapoint\n"
        !           297:     ;;
        !           298: esac
        !           299: printf "rcpoint                        $rcpoint"
        !           300: case "$newrcpoint" in
        !           301:  $rcpoint)
        !           302:     printf "\n"
        !           303:     ;;
        !           304:  *) printf " -> $newrcpoint\n"
        !           305:     ;;
        !           306: esac
        !           307: 
        !           308: printf "Previous version: "
        !           309: scripts/VersionName
        !           310: 
        !           311: # apply packageinfo.sh changes
        !           312: 
        !           313: sed -e "s/^point=.*/point=$newpoint/"                  \
        !           314:     -e "s/^betapoint=.*/betapoint=$newbetapoint/"      \
        !           315:     -e "s/^rcpoint=.*/rcpoint=$newrcpoint/"            \
        !           316:     -e "s/^prerelease=.*/prerelease=$newpr/"           \
        !           317:        < packageinfo.sh                                        \
        !           318:        > packageinfo.sh+
        !           319: 
        !           320: case "$test" in
        !           321:  0)
        !           322:     mv packageinfo.sh+ packageinfo.sh
        !           323:     printf "Updated version: "
        !           324:     scripts/VersionName
        !           325:     ;;
        !           326:  *)
        !           327:     printf "Next version would be: "
        !           328:     scripts/VersionName -p ./packageinfo.sh+
        !           329:     rm packageinfo.sh+
        !           330:     ;;
        !           331: esac

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>