diff options
| -rwxr-xr-x | mk/changelog | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/mk/changelog b/mk/changelog new file mode 100755 index 0000000..34c466e --- /dev/null +++ b/mk/changelog | |||
| @@ -0,0 +1,92 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | set -e # strict errors | ||
| 3 | set -u # don't expand unbound variables | ||
| 4 | set -f # disable pathname expansion | ||
| 5 | set -C # noclobber | ||
| 6 | \unalias -a # no command surprises | ||
| 7 | export LC_ALL=C # no locale headaches | ||
| 8 | unset IFS # no field splitting surprises | ||
| 9 | |||
| 10 | |||
| 11 | RELPATH=${0%/*} | ||
| 12 | : RELPATH=${RELPATH:-.} | ||
| 13 | |||
| 14 | CHANGELOG=${RELPATH}/../debian/changelog | ||
| 15 | ROOTDIR=${RELPATH}/.. | ||
| 16 | |||
| 17 | GIT="$(command -v git)" | ||
| 18 | |||
| 19 | |||
| 20 | changelog() { | ||
| 21 | if [ ! -f ${CHANGELOG} ]; then | ||
| 22 | printf -- "${CHANGELOG}: No such file\n" >&2 | ||
| 23 | exit 1 | ||
| 24 | fi | ||
| 25 | |||
| 26 | cat ${CHANGELOG} | ||
| 27 | } | ||
| 28 | |||
| 29 | |||
| 30 | usage() { | ||
| 31 | cat <<-EOF | ||
| 32 | usage: ${0##*/} [-h] version|author|commit | ||
| 33 | -h print this usage message | ||
| 34 | |||
| 35 | version most recent package version number | ||
| 36 | author author of most recent log message | ||
| 37 | commit Git hash of most recent commit | ||
| 38 | |||
| 39 | Report bugs to <william@25thandClement.com> | ||
| 40 | EOF | ||
| 41 | } | ||
| 42 | |||
| 43 | while getopts h OPT; do | ||
| 44 | case "${OPT}" in | ||
| 45 | h) | ||
| 46 | usage | ||
| 47 | exit 0 | ||
| 48 | ;; | ||
| 49 | *) | ||
| 50 | usage >&2 | ||
| 51 | exit 1 | ||
| 52 | ;; | ||
| 53 | esac | ||
| 54 | done | ||
| 55 | |||
| 56 | shift $(($OPTIND - 1)) | ||
| 57 | |||
| 58 | |||
| 59 | case "${1:-version}" in | ||
| 60 | version) | ||
| 61 | changelog | sed -ne ' | ||
| 62 | s/.*(\([1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\).*).*/\1/ | ||
| 63 | t Found | ||
| 64 | d | ||
| 65 | :Found | ||
| 66 | p | ||
| 67 | q | ||
| 68 | ' | ||
| 69 | ;; | ||
| 70 | author) | ||
| 71 | changelog | sed -ne ' | ||
| 72 | s/.*<\([^>]*@[^>]*\)>.*/\1/ | ||
| 73 | t Found | ||
| 74 | d | ||
| 75 | :Found | ||
| 76 | p | ||
| 77 | q | ||
| 78 | ' | ||
| 79 | ;; | ||
| 80 | commit) | ||
| 81 | test -n "${GIT}" -a -d ${ROOTDIR}/.git || exit 1 | ||
| 82 | |||
| 83 | cd ${ROOTDIR} | ||
| 84 | ${GIT} show --pretty='%H' HEAD 2>/dev/null | sed -n '1p' | ||
| 85 | ;; | ||
| 86 | *) | ||
| 87 | usage >&2 | ||
| 88 | exit 1 | ||
| 89 | ;; | ||
| 90 | esac | ||
| 91 | |||
| 92 | exit 0 | ||
