#!/bin/sh

set -e

usage()
{
	cat <<EOUSAGE
Usage:	git-if-needed command /path/to/file.patch
	git-if-needed [-S] -s /path/to/series command

Options:
	-S	short paths: only use the last component of the patch path
	-s	series file: apply all the patches in that file

Examples:
	git if-needed am /path/to/local.patch
	git if-needed -s /path/to/many-patches/series am
EOUSAGE
}

apply_single()
{
	local cmd="$1" fname="$2"

	if [ ! -e "$fname" ] || [ ! -f "$fname" ] || [ ! -r "$fname" ]; then
		echo "Not a readable regular file: $fname" 1>&2
		exit 1
	fi

	local chgid=''
	chgid="$(awk -- '/^[[:space:]]*Change-Id:[[:space:]]+I[0-9a-f]+$/ { print $2 }' "$fname")"
	if ! expr "x$chgid" : 'xI[0-9a-f][0-9a-f]*$' > /dev/null; then
		echo "Expected a single Change-Id line in $fname" 1>&2
		exit 1
	fi

	if git --no-pager log | grep -Eqe "^[[:space:]]+Change-Id:[[:space:]]+${chgid}\$"; then
		echo "# Change $chgid already present in the Git history"
	elif git --no-pager "$cmd" -- "$fname"; then
		echo "# 'git $cmd $fname' succeeded"
	else
		echo "# 'git $cmd $fname' failed"
		git --no-pager status || echo "# 'git status' also failed"
		exit 1
	fi
}

apply_series()
{
	local cmd="$1" series="$2" short="$3"

	series="$(readlink -f -- "$series")"
	series_dir="$(dirname -- "$series")"
	curdir="$(readlink -f .)"

	while read -r filename; do
		dirname="$(dirname -- "$filename")"
		if [ -n "$short" ]; then
			dirname="$(basename -- "$dirname")"
		fi

		cd -- "$dirname"
		apply_single "$cmd" "$series_dir/$filename"
		cd -- "$curdir"
	done < "$series"
}

unset series short
while getopts 'Ss:' o; do
	case "$o" in
		S)
			short=1
			;;

		s)
			series="$OPTARG"
			;;

		*)
			usage 1>&2
			exit 1
			;;
	esac
done

shift "$((OPTIND - 1))"

if [ -n "$series" ]; then
	if [ "$#" -ne 1 ]; then
		usage 1>&2
		exit 1
	fi

	cmd="$1"
	apply_series "$cmd" "$series" "$short"
	exit 0
fi

if [ "$#" -ne 2 ]; then
	usage 1>&2
	exit 1
fi
cmd="$1"
fname="$2"

apply_single "$cmd" "$fname"
