#!/usr/bin/env zsh set -eo pipefail # exit on existing commit message [[ -z "$2" ]] || exit 0 # remove last line "$n files changed [...]" diff=$(git diff --staged --stat | grep -v '.*.expected.out' | head -n -1) # take file with most changes file=$(echo "$diff" | sort -n -k 3 | tail -n 1) # extract filename file=$(echo "$file" | cut -f 2 -d' ') file="${file#'src/'}" file="${file%.(cpp|h|md|lean)}" case $file in tests/*) type=test ;; script/*) type=chore ;; *) type=feat ;; esac orig=$(cat "$1") echo "$type($file):" > $1 echo "$orig" >> $1