#!/bin/bash
#
# Validate commit message matches our expected format
#
# Arguments:
#   <commit> Commit revision to validate
#
# Example:
# ./validate-commit-msg.sh abcdef0

# Exit on first error
set -e

# If we didn't receive a commit, then error out
# DEV: If want the HEAD commit, then use `git rev-parse HEAD`
COMMIT_REV="$1"
if [ -z "$COMMIT_REV" ]; then
  echo "Expected a commit revision to validate but received nothing" 1>&2
  exit 1
fi


# Resolve our file for output
# DEV: We use `.git` to avoid cluttering the working directory
GIT_DIR="$(git rev-parse --git-dir)"
TARGET_FILENAME=VALIDATE_COMMIT_MSG
TARGET_FILE="$GIT_DIR/$TARGET_FILENAME"

echo "Retrieving relevant commit message for $COMMIT_REV"
# Output our log message to a file
# DEV: We use `--no-merges` to skip merge commits introduced by GitHub
git log --no-merges --format=format:"%s" -n 1 "$COMMIT_REV" > "$TARGET_FILE"

echo "Validating contents of $TARGET_FILE"
cat "$TARGET_FILE"

# Validate our message
./node_modules/.bin/validate-commit-msg "$TARGET_FILENAME"