From 3a6abfad30dafcb1f39a12e6ee74f197cb776abf Mon Sep 17 00:00:00 2001 From: "Alexandru N. Onea" Date: Tue, 9 Apr 2019 01:23:10 +0300 Subject: Initial version-bump.sh --- scripts/version-bump.sh | 160 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100755 scripts/version-bump.sh (limited to 'scripts/version-bump.sh') diff --git a/scripts/version-bump.sh b/scripts/version-bump.sh new file mode 100755 index 0000000..6378801 --- /dev/null +++ b/scripts/version-bump.sh @@ -0,0 +1,160 @@ +#!/bin/bash + +# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +# +# Project configuration variables +# +# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +VERSION_FILE="include/tinyalsa/version.h" + +# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +# +# Scripts internal variables +# +# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +LF="\n" +PARAMS="" + +# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +# +# Helper functions +# +# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +die() +{ + echo "Error: $@" 1>&2 + exit 1 +} + +print_usage() +{ + echo "Usage: $0 [OPTIONS] ACTION" + echo + echo "Available options:" + echo " -s,--script Format output in \"script\" mode (no trailing newline)." + echo + echo "Available actions:" + echo " print [minor|major|patch] Print the current version." + echo + echo "Please run this script from the project root folder." +} + + +# Gets a part of the version from the project version file (version.h). +# Takes one argument: the matching version identifier in the version file. +get_version_part() +{ + local V=$(grep -m 1 "^#define\([ \t]*\)${1}" ${VERSION_FILE} | sed 's/[^0-9]*//g') + + [ ! -z ${V} ] || die "Could not get ${1} from ${VERSION_FILE}" + + echo ${V} +} + + +# Gets the complete version from the version file. +get_version() +{ + [ -f ${VERSION_FILE} ] || die "No ${VERSION_FILE} found! Is this the project root?"; + + VERSION_MAJOR=$(get_version_part "TINYALSA_VERSION_MAJOR") + VERSION_MINOR=$(get_version_part "TINYALSA_VERSION_MINOR") + VERSION_PATCH=$(get_version_part "TINYALSA_VERSION_PATCH") +} + +# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +# +# Actions implementations / functions +# +# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +print_version() +{ + get_version + + if [ -z $1 ]; then + printf "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}${LF}" + else + case "$1" in + major) + printf "${VERSION_MAJOR}${LF}" + ;; + minor) + printf "${VERSION_MINOR}${LF}" + ;; + patch) + printf "${VERSION_PATCH}${LF}" + ;; + *) + die "Unknown part \"$1\" (must be one of minor, major and patch)." + ;; + esac + fi + + return 0 +} + +# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +# +# Command Line parsing +# +# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +parse_command() +{ + if [ "$#" -eq "0" ]; then + print_usage + exit 1 + fi + + case "$1" in + print) + print_version "$2" + exit $? + ;; + *) + die "Unsupported action \"$1\"." + ;; + esac +} + +# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +# +# Main +# +# -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= + +set -e +trap "set +e" 0 + +# Checking parameters +if [ "$#" -eq "0" ]; then + print_usage + exit 0 +fi + +while [ "$#" -ne "0" ]; do + case "$1" in + -s|--script) + unset LF + shift + ;; + --) + shift + break + ;; + -*|--*=) + die "Unsupported flag \"$1\"." + ;; + *) + PARAMS="$PARAMS ${1}" + shift + ;; + esac +done + +# set positional arguments in their proper place +set -- "${PARAMS}" + +parse_command ${PARAMS} + +# The script should never reach this place. +die "Internal error. Please report this." -- cgit v1.2.3