#!/bin/bash # lw-build-system/scripts/version.sh # # Copyright: ©2007–2010, Laurence Withers # Author: Laurence Withers # License: GPLv3 # # 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