lw-build-system/scripts/version.sh

127 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
# lw-build-system/scripts/version.sh
#
# (c)2009, Laurence Withers <l@lwithers.me.uk>.
# Released under the GNU GPLv3. See file COPYING or
# http://www.gnu.org/copyleft/gpl.html for details.
#
# Script to automate bumping of version or soversion files, and pushing
# changes (and tags) to the origin repository.
#
if [ $# -eq 0 ]
then
echo "Usage: $0 COMMANDS"
echo ""
echo " major - bump major version, reset minor and micro"
echo " minor - bump minor version, reset micro"
echo " micro - bump micro version"
echo " libmajor LIB - as major but for soversion"
echo " libmicro LIB - as micro but for soversion"
echo " tag - tag version"
echo " push - do a git push with --tags"
exit 1
fi
edit_versions() {
file="$1"
shift
SEDCMD=""
while [ $# -ne 0 ]
do
var="$1"
shift
value="$1"
shift
SEDCMD="${SEDCMD} -e s,^${var}=.*$,${var}=${value},"
done
sed ${SEDCMD} -i "${file}"
git commit -m "Bump version" "${file}"
}
bump_major() {
source "./version"
edit_versions "version" "VERMAJOR" "$[${VERMAJOR} + 1]" "VERMINOR" "0" "VERMICRO" "0"
}
bump_minor() {
source "./version"
edit_versions "version" "VERMINOR" "$[${VERMINOR} + 1]" "VERMICRO" "0"
}
bump_micro() {
source "./version"
edit_versions "version" "VERMICRO" "$[${VERMICRO} + 1]"
}
bump_somajor() {
source "./src/$1/soversion"
edit_versions "src/$1/soversion" "SOMAJOR" "$[${SOMAJOR} + 1]" "SOMINOR" "0" "SOMICRO" "0"
}
bump_somicro() {
source "./src/$1/soversion"
edit_versions "src/$1/soversion" "SOMICRO" "$[${SOMICRO} + 1]"
}
do_tag() {
source "./version"
git tag "${VERMAJOR}.${VERMINOR}.${VERMICRO}"
}
do_push() {
git push
git push --tags
}
set -ex
while [ $# -ne 0 ]
do
case $1 in
major)
bump_major
;;
minor)
bump_minor
;;
micro)
bump_micro
;;
libmajor)
bump_somajor $2
shift
;;
libmicro)
bump_somicro $2
shift
;;
tag)
do_tag
;;
push)
do_push
;;
*)
echo "Unrecognised command: $1"
exit 1
;;
esac
shift
done
true
# vim:ts=4:sw=4:expandtab