#!/usr/bin/env bash
#==========================================================================
#
#   Copyright Insight Software Consortium
#
#   Licensed 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.txt
#
#   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.
#
#==========================================================================*/

egrep-q() {
  egrep "$@" >/dev/null 2>/dev/null
}

# First argument is file containing commit message.
commit_msg="$1"

# Check for our extra instructions (idempotent).
egrep-q "^# Start BRAINSTools commit messages" -- "$commit_msg" && return 0

# Insert our extra instructions after the "# On branch ..." line so the
# branch name is still visible in the editor.
commit_msg_tmp="$commit_msg.$$"
instructions='#\
# Start BRAINSTools commit messages with a standard prefix (and a space):\
#   BUG:    - fix for runtime crash or incorrect result\
#   COMP:   - compiler error or warning fix\
#   DOC:    - documentation change\
#   ENH:    - new functionality\
#   PERF:   - performance improvement\
#   STYLE:  - no logic impact (indentation, comments)\
#   WIP:    - Work In Progress not ready for merge\
#\
# The first line should preferably be 72 characters or less;\
# the maximum allowed is 78 characters.\
#\
# Follow the first line with an empty line, then a detailed description\
# in one or more paragraphs.\
#\
# To reference a GitHub issue XY, add " (#XY)" to the END of the FIRST line.\
#' &&
sed '/^# On branch.*$/ a\
'"$instructions"'
/^# Not currently on any branch.*$/ a\
'"$instructions"'
' "$commit_msg" > "$commit_msg_tmp" &&
mv "$commit_msg_tmp" "$commit_msg"
