lang-bootstrap/06/helpers/maint/notes

30 lines
992 B
Text
Raw Normal View History

2025-04-18 12:41:04 +01:00
#!/usr/bin/env bash
set -ueo pipefail
if [[ $# == 0 || "$1" == 'show' ]]; then
exec git tree --show-notes --decorate=short --color=always \
| grep -v '^|\s*$' \
| grep -v 'Notes:$' \
| sed 's/ Built-on: /^ Built-on: /' \
| less
elif [[ "$1" == 'mark-built' ]] && (( $# >= 3 )) ; then
commit=$2; hostname=$3; how=$4; shift 4; extra="$@"
git fetch origin refs/notes/commits:refs/notes/commits
if ! grep -Eqx 'how=(raw|make|nix)' <<<$how; then
echo 'how must be one of: raw, make, nix' >/dev/stderr
exit 1
fi
msg="Built-on: $hostname $how $extra"
if grep -Fqx "$msg" <(git notes show "$commit" 2>/dev/null); then
echo "$commit is already marked with '$msg'" >/dev/stderr
exit
fi
git notes append -m "$msg" "$commit"
git push origin refs/notes/commits
else
echo 'Usage: ' >/dev/stderr
echo ' helpers/notes [show]' >/dev/stderr
echo -n ' helpers/notes mark-built ' >/dev/stderr
echo '<commit> <hostname> how=[raw|make|nix] <extra stuff>' >/dev/stderr
exit 1
fi