arti/maint/thanks

32 lines
1.0 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env bash
set -euo pipefail
if [ -z "${1-}" ]; then
echo "Usage: $0 [revision]"
echo "Script will print thanks for all contributors since [revision]."
exit 1
fi
TEMPDIR=$(mktemp -d)
2021-10-29 15:35:37 +01:00
TO_EXCLUDE="$(dirname "$0")/exclude_contributors.txt"
LAST_REV=$1
2021-10-29 15:37:33 +01:00
trap 'rm -rf "$TEMPDIR"' 0
echo "[*] Finding contributors since $LAST_REV..."
git log --pretty="%an%n%cn" HEAD "^$LAST_REV" | sort | uniq > "$TEMPDIR/contributors.txt"
2021-10-29 15:35:37 +01:00
echo "[*] Found $(wc -l < "$TEMPDIR/contributors.txt") contributors!"
echo "[*] Removing contributors listed in $TO_EXCLUDE..."
comm -13 "$TO_EXCLUDE" "$TEMPDIR/contributors.txt" | sed 's/^[[:space:]]*\|[[:space:]]*$//g' > "$TEMPDIR/final.txt"
2021-10-29 15:35:37 +01:00
echo "[*] Ended up with $(wc -l < "$TEMPDIR/final.txt") contributors remaining."
readarray -t CONTRIBUTORS < "$TEMPDIR/final.txt"
# from https://stackoverflow.com/a/17841619/4739163
function join_by { local d=${1-} f=${2-}; if shift 2; then printf %s "$f" "${@/#/$d}"; fi; }
OUTPUT=$(join_by ", " "${CONTRIBUTORS[@]}")
echo "Contributors: $OUTPUT"