#!/usr/bin/env bash set -euo pipefail if git diff --cached --quiet; then echo "No staged changes." exit 1 fi MSG=$( git diff --cached \ | ollama run git-commit \ | sed '/^$/d' \ | tail -n 1 ) COMMIT_RE='^(feat|fix|docs|refactor|build|chore|test|perf|ci|revert)(\([[:alnum:]_-]+\))?: .+$' if ! [[ $MSG =~ $COMMIT_RE ]]; then echo "Invalid commit message:" echo "$MSG" exit 1 fi echo echo "Generated commit message:" echo " $MSG" echo read -rp "Commit? [Y/n] " CONFIRM [[ "$CONFIRM" =~ ^[Nn]$ ]] && exit 0 git commit -m "$MSG"