#!/bin/sh
#
# Copyright (c) 2010-2013,  Intel Corporation.
# All Rights Reserved
# 
# 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; either version 2 of the License, or
# (at your option) any later version.
#
# 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.
#
# You should have received a copy of the GNU General Public License
# along with this program;  if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#

#
# This script is intended to be used to prepare a series of patches
# and a cover letter in an appropriate and consistent format for
# submission to Open Embedded and The Yocto Project, as well as to
# related projects and layers.
#

ODIR=pull-$$
RELATIVE_TO="master"
COMMIT_ID="HEAD"
PREFIX="PATCH"
RFC=0

usage() {
CMD=$(basename $0)
cat <<EOM
Usage: $CMD [-h] [-o output_dir] [-m msg_body_file] [-s subject] [-r relative_to] [-i commit_id] [-d relative_dir] -u remote [-b branch] [-- <format-patch options>]
  -b branch           Branch name in the specified remote (default: current branch)
  -l local branch     Local branch name (default: HEAD)
  -c                  Create an RFC (Request for Comment) patch series
  -h                  Display this help message
  -a                  Automatically push local branch (-l) to remote branch (-b),
                      or set CPR_CONTRIB_AUTO_PUSH in env
  -i commit_id        Ending commit (default: HEAD)
  -m msg_body_file    The file containing a blurb to be inserted into the summary email
  -o output_dir       Specify the output directory for the messages (default: pull-PID)
  -p prefix           Use [prefix N/M] instead of [PATCH N/M] as the subject prefix
  -r relative_to      Starting commit (default: master)
  -s subject          The subject to be inserted into the summary email
  -u remote           The git remote where the branch is located, or set CPR_CONTRIB_REMOTE in env
  -d relative_dir     Generate patches relative to directory

 Examples:
   $CMD -u contrib -b nitin/basic
   $CMD -u contrib -r distro/master -i nitin/distro -b nitin/distro
   $CMD -u contrib -r distro/master -i nitin/distro -b nitin/distro -l distro
   $CMD -u contrib -r master -i misc -b nitin/misc -o pull-misc
   $CMD -u contrib -p "RFC PATCH" -b nitin/experimental
   $CMD -u contrib -i misc -b nitin/misc -d ./bitbake
   $CMD -u contrib -r origin/master -o /tmp/out.v3 -- -v3 --in-reply-to=20170511120134.XX7799@site.com
EOM
}

REMOTE="$CPR_CONTRIB_REMOTE"
# Parse and validate arguments
while getopts "b:acd:hi:m:o:p:r:s:u:l:" OPT; do
	case $OPT in
	b)
		BRANCH="$OPTARG"
		;;
	l)
		L_BRANCH="$OPTARG"
		;;
	c)
		RFC=1
		;;
	d)
		RELDIR="$OPTARG"
		;;
	h)
		usage
		exit 0
		;;
	i)
		COMMIT_ID="$OPTARG"
		;;
	m)
		BODY="$OPTARG"
		if [ ! -e "$BODY" ]; then
			echo "ERROR: Body file does not exist"
			exit 1
		fi
		;;
	o)
		ODIR="$OPTARG"
		;;
	p)
		PREFIX="$OPTARG"
		;;
	r)
		RELATIVE_TO="$OPTARG"
		;;
	s)
		SUBJECT="$OPTARG"
		;;
	u)
		REMOTE="$OPTARG"
		;;
	a)
		CPR_CONTRIB_AUTO_PUSH="1"
		;;
	--)
		shift
		break
		;;
	esac
done

shift "$((OPTIND - 1))"
extraopts="$@"

if [ -z "$REMOTE" ]; then
	echo "ERROR: Missing parameter -u or CPR_CONTRIB_REMOTE in env, no git remote!"
	usage
	exit 1
fi

REMOTE_URL=$(git config remote.$REMOTE.url)
if [ $? -ne 0 ]; then
	echo "ERROR: git config failed to find a url for '$REMOTE'"
	echo
	echo "To add a remote url for $REMOTE, use:"
	echo "  git config remote.$REMOTE.url <url>"
	exit 1
fi

# Rewrite private URLs to public URLs
# Determine the repository name for use in the WEB_URL later
case "$REMOTE_URL" in
*@*)
	USER_RE="[A-Za-z0-9_.@][A-Za-z0-9_.@-]*\$\?"
	PROTO_RE="[a-z][a-z+]*://"
	GIT_RE="\(^\($PROTO_RE\)\?$USER_RE@\)\([^:/]*\)[:/]\(.*\)"
	REMOTE_URL=${REMOTE_URL%.git}
	REMOTE_REPO=$(echo $REMOTE_URL | sed "s#$GIT_RE#\4#")
	REMOTE_URL=$(echo $REMOTE_URL | sed "s#$GIT_RE#git://\3/\4#")
	;;
*)
	echo "WARNING: Unrecognized remote URL: $REMOTE_URL"
	echo "         The pull and browse URLs will likely be incorrect"
	;;
esac

if [ -z "$BRANCH" ]; then
	BRANCH=$(git branch | grep -e "^\* " | cut -d' ' -f2)
	echo "NOTE: Assuming remote branch '$BRANCH', use -b to override."
fi

if [ -z "$L_BRANCH" ]; then
	L_BRANCH=HEAD
	echo "NOTE: Assuming local branch HEAD, use -l to override."
fi

if [ $RFC -eq 1 ]; then
	PREFIX="RFC $PREFIX"
fi


# Set WEB_URL from known remotes
WEB_URL=""
case "$REMOTE_URL" in
	*git.yoctoproject.org*)
		WEB_URL="http://git.yoctoproject.org/cgit.cgi/$REMOTE_REPO/log/?h=$BRANCH"
		;;
	*git.pokylinux.org*)
		WEB_URL="http://git.pokylinux.org/cgit.cgi/$REMOTE_REPO/log/?h=$BRANCH"
		;;
	*git.openembedded.org*)
		WEB_URL="http://cgit.openembedded.org/$REMOTE_REPO/log/?h=$BRANCH"
		;;
	*github.com*)
		WEB_URL="https://github.com/$REMOTE_REPO/tree/$BRANCH"
		;;
esac

# Perform a sanity test on the web URL. Issue a warning if it is not
# accessible, but do not abort as users may want to run offline.
if [ -n "$WEB_URL" ]; then
	if [ "$CPR_CONTRIB_AUTO_PUSH" = "1" ]; then
		echo "Pushing '$BRANCH' on '$REMOTE' as requested..."
		git push $REMOTE $L_BRANCH:$BRANCH
		echo ""
	fi
	wget --no-check-certificate -q $WEB_URL -O /dev/null
	if [ $? -ne 0 ]; then
		echo "WARNING: Branch '$BRANCH' was not found on the contrib git tree."
		echo "         Please check your remote and branch parameter before sending."
		echo ""
	fi
fi

if [ -e $ODIR ]; then
	echo "ERROR: output directory $ODIR exists."
	exit 1
fi
mkdir $ODIR

if [ -n "$RELDIR" ]; then
	ODIR=$(realpath $ODIR)
	pdir=$(pwd)
	cd $RELDIR
	extraopts="$extraopts --relative"
fi

# Generate the patches and cover letter
git format-patch $extraopts -M40 --subject-prefix="$PREFIX" -n -o $ODIR --thread=shallow --cover-letter $RELATIVE_TO..$COMMIT_ID > /dev/null

if [ -z "$(ls -A $ODIR 2> /dev/null)" ]; then
    echo "ERROR: $ODIR is empty, no cover letter and patches was generated!"
    echo "       This is most likely due to that \$RRELATIVE_TO..\$COMMIT_ID"
    echo "       ($RELATIVE_TO..$COMMIT_ID) don't contain any differences."
    rmdir $ODIR
    exit 1
fi

[ -n "$RELDIR" ] && cd $pdir

# Customize the cover letter
CL="$(echo $ODIR/*0000-cover-letter.patch)"
PM="$ODIR/pull-msg"
GIT_VERSION=$(`git --version` | tr -d '[:alpha:][:space:].' | sed 's/\(...\).*/\1/')
NEWER_GIT_VERSION=210
if [ $GIT_VERSION -lt $NEWER_GIT_VERSION ]; then
	git request-pull $RELATIVE_TO $REMOTE_URL $COMMIT_ID >> "$PM"
else
	git request-pull $RELATIVE_TO $REMOTE_URL $L_BRANCH:$BRANCH >> "$PM"
fi
if [ $? -ne 0 ]; then
	echo "ERROR: git request-pull reported an error"
	rm -rf $ODIR
	exit 1
fi

# The cover letter already has a diffstat, remove it from the pull-msg
# before inserting it.
sed -n "0,\#$REMOTE_URL# p" "$PM" | sed -i "/BLURB HERE/ r /dev/stdin" "$CL"
rm "$PM"

# If this is an RFC, make that clear in the cover letter
if [ $RFC -eq 1 ]; then
(cat <<EOM
Please review the following changes for suitability for inclusion. If you have
any objections or suggestions for improvement, please respond to the patches. If
you agree with the changes, please provide your Acked-by.

EOM
) | sed -i "/BLURB HERE/ r /dev/stdin" "$CL"
fi

# Insert the WEB_URL if there is one
if [ -n "$WEB_URL" ]; then
	echo "  $WEB_URL" | sed -i "\#$REMOTE_URL# r /dev/stdin" "$CL"
fi


# If the user specified a message body, insert it into the cover letter and
# remove the BLURB token.
if [ -n "$BODY" ]; then
	sed -i "/BLURB HERE/ r $BODY" "$CL"
	sed -i "/BLURB HERE/ d" "$CL"
fi

# Set subject automatically if there is only one patch
patch_cnt=`git log --pretty=oneline ${RELATIVE_TO}..${L_BRANCH} | wc -l`
if [ -z "$SUBJECT" -a $patch_cnt -eq 1 ]; then
    SUBJECT="`git log --format=%s ${RELATIVE_TO}..${L_BRANCH}`"
fi

# Replace the SUBJECT token with it.
if [ -n "$SUBJECT" ]; then
	sed -i -e "s/\*\*\* SUBJECT HERE \*\*\*/$SUBJECT/" "$CL"
fi


# Generate report for user
cat <<EOM
The following patches have been prepared:
$(for PATCH in $(ls $ODIR/*); do echo "    $PATCH"; done)

Review their content, especially the summary mail:
    $CL

When you are satisfied, you can send them with:
    send-pull-request -a -p $ODIR
EOM

# Check the patches for trailing white space
egrep -q -e "^\+.*\s+$" $ODIR/*
if [ $? -ne 1 ]; then
	echo
	echo "WARNING: Trailing white space detected at these locations"
	egrep -nH --color -e "^\+.*\s+$" $ODIR/*
fi
