Annotation of embedaddon/ntp/scripts/UpdatePoint, revision 1.1.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>