89 lines
1.3 KiB
Bash
Executable File
89 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Sekati: Semantic Version String Manipulator
|
|
# @author jason m horwitz | sekati.com
|
|
# Copyright (C) 2012 jason m horwitz, Sekat LLC. All Rights Reserved.
|
|
|
|
NAME="semver"
|
|
DESC="Manipulate semantical version strings '<major>.<minor>.<patch>' (@see http://semver.org)."
|
|
VERSION="1.0.0"
|
|
|
|
spacer() {
|
|
echo ""
|
|
}
|
|
|
|
usage() {
|
|
bin=$(basename $0)
|
|
echo "$NAME v$VERSION - $DESC"
|
|
echo "usage: $bin { -m | -n | -p } { version }"
|
|
echo " $bin [ -m ] major version increment."
|
|
echo " $bin [ -n ] minor version increment."
|
|
echo " $bin [ -p ] patch version increment."
|
|
echo " $bin [ -h --help ] script usage."
|
|
die
|
|
}
|
|
|
|
die() {
|
|
echo $@
|
|
exit 1
|
|
}
|
|
|
|
vmajor() {
|
|
VOUT=`echo $VIN | ( IFS=".$IFS" ; read a b c && echo $((a + 1 ))."0"."0" )`
|
|
}
|
|
|
|
vminor() {
|
|
VOUT=`echo $VIN | ( IFS=".$IFS" ; read a b c && echo $a.$((b + 1))."0" )`
|
|
}
|
|
|
|
vpatch() {
|
|
VOUT=`echo $VIN | ( IFS=".$IFS" ; read a b c && echo $a.$b.$((c + 1)) )`
|
|
}
|
|
|
|
VIN="$BASH_ARGV"
|
|
|
|
if test -z "$BASH_ARGV"; then
|
|
spacer
|
|
echo "Missing Version String Argument!"
|
|
spacer
|
|
usage
|
|
fi
|
|
|
|
while getopts "pmnh(-help)" flag
|
|
do
|
|
case $flag in
|
|
|
|
h|-help)
|
|
usage
|
|
break;
|
|
;;
|
|
|
|
m)
|
|
vmajor
|
|
die $VOUT
|
|
break;
|
|
;;
|
|
|
|
n)
|
|
vminor
|
|
die $VOUT
|
|
break;
|
|
;;
|
|
|
|
p)
|
|
vpatch
|
|
die $VOUT
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
# Default to patch if version was passed without trigger
|
|
if test -z "$BASH_ARGV"; then
|
|
exit 0
|
|
else
|
|
vpatch
|
|
die $VOUT
|
|
fi
|
|
|
|
exit 1
|