diff --git a/configure.ac b/configure.ac index a84c9d1..e4c3de9 100644 --- a/configure.ac +++ b/configure.ac @@ -1,8 +1,8 @@ ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## -m4_define([v_maj], [0]) -m4_define([v_min], [6]) -m4_define([v_mic], [31]) +m4_define([v_maj], [m4_esyscmd_s([./util/gitdesc.sh major])]) +m4_define([v_min], [m4_esyscmd_s([./util/gitdesc.sh minor])]) +m4_define([v_mic],[m4_esyscmd_s([./util/gitdesc.sh micro])]) ##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--## m4_define([v_v], m4_join([], v_min, v_mic)) m4_define([v_ver], [v_maj.v_v]) diff --git a/util/gitdesc.sh b/util/gitdesc.sh new file mode 100755 index 0000000..06f6aa8 --- /dev/null +++ b/util/gitdesc.sh @@ -0,0 +1,105 @@ +#?bin/sh +# Peter Hyman, pete@peterhyman.com +# December 2020 + +# This program will return commit references based on Tags and Annotated Tags from git describe + +usage() { +cat >&2 < 0 then add it and commit to micro version +# Expected format is: +# v#.###-g####### +init() { + describe_tag=$(git describe $tagopt --long --abbrev=7) + describe_tag=${describe_tag/v/} + describe_tag=${describe_tag/g/} + commit=$(echo $describe_tag | cut -d- -f3) + tagrev=$(echo $describe_tag | cut -d- -f2) + version=$(echo $describe_tag | cut -d- -f1) + micro=${version: -2} + [ $tagrev -gt 0 ] && micro=$micro-$tagrev-$commit + minor=${version: -3:1} + major=$(echo $version | cut -d. -f1) +} + +[ ! $(which git) ] && die "Something very wrong: git not found." + +[ $# -eq 0 ] && die "Must provide a command and optional argument." + +# are we getting a release only? +if [ $# -eq 2 ]; then + if [ $2 = "-r" ]; then + tagopt="" + else + die "Invalid option. Must be -r or nothing." + fi +fi + +init + +case "$1" in + "all" ) + retval=$describe_tag + ;; + "commit" ) + retval=$commit + ;; + "tagrev" ) + retval=$tagrev + ;; + "version" ) + retval=$version + ;; + "major" ) + retval=$major + ;; + "minor" ) + retval=$minor + ;; + "micro" ) + retval=$micro + ;; + * ) + die "Invalid command." + ;; +esac + +echo $retval + +exit 0