#!/bin/sh

# Copyright (C) 2020 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
# GCC is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GCC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GCC; see the file COPYING.  If not, write to
# the Free Software Foundation, 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.

COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3

# We might be on a branch before the file was added.
if ! [ -x contrib/mklog.py ]; then exit 0; fi

# Can't do anything if $COMMIT_MSG_FILE isn't a file.
if ! [ -f "$COMMIT_MSG_FILE" ]; then exit 0; fi

# Don't do anything unless requested to.
if [ -z "$GCC_FORCE_MKLOG" ]; then exit 0; fi

if [ -z "$COMMIT_SOURCE" ] || [ $COMMIT_SOURCE = template ]; then
    # No source or "template" means new commit.
    cmd="diff --cached"

elif [ $COMMIT_SOURCE = message ]; then
    # "message" means -m; assume a new commit if there are any changes staged.
    if ! git diff --cached --quiet; then
	cmd="diff --cached"
    else
	cmd="diff --cached HEAD^"
    fi

elif [ $COMMIT_SOURCE = commit ]; then
    # The message of an existing commit.  If it's HEAD, assume --amend;
    # otherwise, assume a new commit with -C.
    if [ $SHA1 = HEAD ]; then
	cmd="diff --cached HEAD^"
	if [ "$(git config gcc-config.mklog-hook-type)" = "smart-amend" ]; then
	    # Check if the existing message still describes the staged changes.
	    f=$(mktemp /tmp/git-commit.XXXXXX) || exit 1
	    git log -1 --pretty=email HEAD > $f
	    printf '\n---\n\n' >> $f
	    git $cmd >> $f
	    if contrib/gcc-changelog/git_email.py "$f" >/dev/null 2>&1; then
		# Existing commit message is still OK for amended commit.
		rm $f
		exit 0
	    fi
	    rm $f
	fi
    else
	cmd="diff --cached"
    fi
else
    # Do nothing for merge or squash.
    exit 0
fi

# Save diff to a file if requested.
DIFF_FILE=$(git config gcc-config.diff-file)
if ! [ -z "$DIFF_FILE" ]; then
    tee="tee $DIFF_FILE"
else
    tee="cat"
fi

git $cmd | $tee | git gcc-mklog -c "$COMMIT_MSG_FILE"
