#!/bin/sh
# prepare-commit-msg — prefix the first non-comment subject line with the
# already-bumped connected identifier: "v{VERSION}-{BUILD} <original subject>".
# Strips one existing matching prefix first, so amend/rebase/cherry-pick and
# repeated execution stay idempotent. Message bodies and trailers are preserved.

HOOKDIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
. "$HOOKDIR/versionlib.sh"

msgfile=$1
[ -f "$msgfile" ] || exit 0

ver=$(read_version) || exit 1
validate_identifier "$ver"

tmp=$(mktemp) || exit 1
awk -v stamp="$ver" '
  !done && $0 !~ /^#/ {
    sub(/^v[0-9]+\.[0-9]\.[0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9a-z] /, "")
    print stamp " " $0
    done = 1
    next
  }
  { print }
' "$msgfile" > "$tmp" && mv -f -- "$tmp" "$msgfile"
