#!/bin/sh
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#  http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
# This script checks the commit log message.

if [ ! -s "$1" ] || ! grep -v '^#' "$1" | grep -q '[^[:space:]]'; then
	echo "Aborting commit due to empty commit message." >&2
	exit 1
fi

# Separate subject from body with a blank line
line2=$(sed '2q;d' "$1")
if [ -n "$line2" ] && echo "$line2" | grep -qv '^#'; then
	echo "FAIL: put a blank line to separate subject from body" >&2
	head -n 2 "$1" >&2
	exit 1
fi

# Limit the subject line to 50 characters
subject=$(head -n 1 "$1")
subject_len=$(printf "$subject" | wc -m)
if [ $subject_len -gt 72 ]; then
	echo "FAIL: subject lines cannot be longer than 72 characters" >&2
	echo "$subject" >&2
	exit 1
elif [ $subject_len -gt 50 ]; then
	echo "Subject lines less than or equal to 50 characters are preferred."
fi

# Capitalize the subject line
if echo "$subject" | grep -qv '^[[:upper:]]'; then
	echo "FAIL: begin the subject line with a capital letter" >&2
	echo "$subject" >&2
	exit 1
fi

# Do not end the subject line with a period
if echo "$subject" | grep -q '\.$'; then
	echo "FAIL: trailing punctuation is unnecessary in subject lines" >&2
	echo "$subject" >&2
	exit 1
fi

# Wrap the body at 72 characters
lines=$(grep -nE '.{73,}' "$1")
if [ -n "$lines" ]; then
	echo "FAIL: wrap the body at 72 characters" >&2
	echo "$lines" >&2
	exit 1
fi
