#!/bin/sh

# rebase.sh - rebase helper script
#
# Copyright 2015, 2017 Google Inc.
#
# This program 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; version 2 of the License.
#
# This program 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.
#

# Adapt to your remote branch:
BRANCH="origin/master"

# When pulling in patches from another tree from a gerrit repository,
# do the following at the end of a larger cherry-pick series:
#  git remote add ...
#  git checkout -b upstreaming
#  git cherry-pick ...
#  git rebase -i --exec util/gitconfig/rebase.sh master
# Alternatively, you can run util/gitconfig/rebase.sh after every
# individual cherry-pick.

# use $0 --cros to add a stub BUG/BRANCH/TEST block

commit_message() {
	git log -n 1 | grep "^    " | cut -c5-
}

ORIGIN_HOST=$( commit_message |grep "^Reviewed-on: " |head -1 |cut -d/ -f3 )
case "${ORIGIN_HOST}" in
	review.coreboot.org)
		BRANCH="origin/master"
		MESSAGE_PREFIX="UPSTREAM: "
		;;
	chromium-review.googlesource.com)
		BRANCH="cros/chromeos-2016.05"
		MESSAGE_PREFIX=""
		;;
esac

# lines must be backwards due to tac(1)
SPLICE_CMD=""
if test "$1" = "--cros"; then
	if test -z "$( commit_message |egrep '^(BUG|TEST)=')"; then
		SPLICE_CMD='print "\nTEST=none\nBRANCH=none\nBUG=none\n"'
	fi
fi

CHID=$( commit_message | grep -i "^Change-Id: I" )
CID=$( git log -n1 --grep "^$CHID$" --pretty=%H $BRANCH )
GUID="$(git config user.name) <$(git config user.email)>"

# TBD: Don't add Original- to empty lines, and possibly make script more
# solid for commits with an unexpected order of meta data lines.

(printf "${MESSAGE_PREFIX}"; commit_message) | tac | awk '/^$/ {
		if (end==0) {
			print "Original-Commit-Id: '"${CID}"'\nSigned-off-by: '"${GUID}"'";
			'"${SPLICE_CMD}"'
		}
		end=1
	}; {
		if (end==0)
			print "Original-" $0;
		else
			print $0;
	}' | tac | git commit --amend -F -
