#!/usr/bin/env bash set -euo pipefail top="$(pwd)" readonly top usage() { echo 'Usage: ./configure-version [--update | --clean]' } update-cpy() { declare -r cpy=lib/bup/_checkout.py rm -f $cpy.tmp-$$ local hash date desc hash=$(git log -1 --pretty=format:%H) date=$(git log -1 --pretty=format:%ci) desc=$(git describe --always --match="[0-9]*") cat > $cpy.tmp-$$ <<-EOF COMMIT='$hash' NAMES='(tag: $desc)' DATE='$date' EOF if ! test -e $cpy || ! cmp -s $cpy $cpy.tmp-$$; then mv $cpy.tmp-$$ $cpy; fi rm -f $cpy.tmp-$$ } if test "$#" -ne 1; then usage 1>&2; exit 1 fi if ! test -f lib/bup/bupsplit.c; then echo 'error: cannot find bup source tree' 1>&2 exit 1 fi case "$1" in --update) rc=0 grep -q -F '$Format' lib/bup/_release.py || rc=$? case $rc in 0) update-cpy ;; 1) if test -d .git; then echo 'error: detected release, but found ./.git' 1>&2 exit 1 fi echo "Detected release tree; skipping version configuration" 1>&2 exit 0 ;; *) echo 'error: grep failed' 1>&2 exit 1 esac ;; --clean) rm -f lib/bup/_checkout.py lib/bup/_checkout.pyc lib/bup/_checkout.py.tmp-* ;; *) usage 1>&2; exit 1 ;; esac