#!/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"