Blame sofort/tools/version.sh

9c558e
#!/bin/sh
9c558e
12fcaa
# version.sh: detect git repository info, output defs as a C header.
12fcaa
# this file is covered by COPYING.SOFORT.
12fcaa
1c84d5
set -eu
1c84d5
9c558e
usage()
9c558e
{
9c558e
cat << EOF >&2
9c558e
9c558e
Usage:
9c558e
  -h            show this HELP message
9c558e
  -s  SRCDIR    set source directory
9c558e
  -o  OUTPUT    set output header
9c558e
  -p  PREFIX    set macro prefix
9c558e
9c558e
EOF
9c558e
exit 1
9c558e
}
9c558e
9c558e
9c558e
# one
a834c1
workdir=$(pwd -P)
9c558e
srcdir=
9c558e
output=
9c558e
prefix=
9c558e
9c558e
9c558e
while getopts "hs:o:p:" opt; do
9c558e
	case $opt in
9c558e
	h)
9c558e
  		usage
9c558e
  		;;
9c558e
	s)
9c558e
    		srcdir="$OPTARG"
9c558e
    		;;
9c558e
	o)
9c558e
    		output="$OPTARG"
9c558e
    		;;
9c558e
	p)
9c558e
    		prefix="$OPTARG"
9c558e
    		;;
9c558e
	\?)
aecab0
		printf 'Invalid option: -%s' "$OPTARG" >&2
9c558e
    		usage
9c558e
    		;;
9c558e
	esac
9c558e
done
9c558e
9c558e
9c558e
# two
9c558e
if [ -z "$srcdir" ] || [ -z "$output" ] || [ -z "$prefix" ]; then
9c558e
	usage
9c558e
fi
9c558e
cada88
cd -- "$srcdir"
9c558e
a37f42
gitver=$(git rev-parse --verify HEAD      2>/dev/null) || gitver="unknown"
a37f42
cvdate=$(git show -s --format=%ci $gitver 2>/dev/null) || cvdate=$(date)
9c558e
fd406c
vmacro=$(printf '%s' "$prefix"'_GIT_VERSION' | tr '[:lower:]' '[:upper:]')
fd406c
dmacro=$(printf '%s' "$prefix"'_GIT_DATE   ' | tr '[:lower:]' '[:upper:]')
fd406c
cada88
cd -- "$workdir"
fd406c
c521d9
c521d9
# three
fd406c
printf '#define %s "%s"\n#define %s "%s"\n' \
fd406c
		"$vmacro" "$gitver" \
fd406c
		"$dmacro" "$cvdate" \
fd406c
	> "$output"
9c558e
9c558e
# all done
9c558e
exit 0