#!/usr/local/plan9/bin/rc

git=git
show=false
fn gitshow {
	echo '%' git $*
	git $*
}
if(! ~ $#* 0 && ~ $1 -v) {
	git=gitshow
	show=true
	shift
}
	
if(~ $#* 0) {
	echo 'usage: codereview <command> <args>' >[1=2]
	exit usage
}

if(~ $#PLAN9 0) {
	PLAN9=/usr/local/plan9
}
if(! test -d $PLAN9/lib/git) {
	echo 'codereview: cannot find $PLAN9/lib/git' >[1=2]
	exit git
}

if(! test -e $PLAN9/.git/hooks/commit-msg) {
	if($show) {
		echo '% ln -s ../../lib/git/commit-msg.hook $PLAN9/.git/hooks/commit-msg'
	}
	ln -s ../../lib/git/commit-msg.hook $PLAN9/.git/hooks/commit-msg
}

switch($1) {
case help
	9 man 1 codereview

case pending
	shift
	if(! ~ $#* 0) {
		echo 'usage: codereview pending' >[1=2]
		exit usage
	}
	$git branch --list

case create
	shift
	if(~ $#* 0) {
		echo 'usage: codereview create branchname' >[1=2]
		exit usage
	}
	branch=$1
	shift
	if(! git branch -l | 9 grep '\* master$' >/dev/null) {
		echo 'codereview: create not on master branch; use codereview commit' >[1=2]
		exit master
	}
	if($show) {
		echo '% git branch '$branch' && git commit || git branch -d '$branch >[1=2]
	}
	git branch $branch && git checkout $branch && git commit -a $* || git branch -d $branch

case commit
	shift
	if(git branch -l | 9 grep '\* master$' >/dev/null) {
		echo 'codereview: commit on master branch; use codereview create <branchname>' >[1=2]
		exit master
	}
	if(~ `{git merge-base HEAD HEAD} `{git merge-base HEAD master}) {
		# first commit on branch, somehow.
		$git commit $*
		exit $status
	}
	$git commit --amend -a $*
	exit $status

case upload
	if(git branch -l | 9 grep '\* master$' >/dev/null) {
		echo 'codereview: upload on master branch' >[1=2]
		exit master
	}
	if(~ `{git merge-base HEAD HEAD} `{git merge-base HEAD master}) {
		# no commit on branch
		echo 'codereview: no commits yet on this feature branch' >[1=2]
		exit commit
	}
	if(! 9 grep 'machine plan9port-review.googlesource.com' $HOME/.netrc >/dev/null >[2=1]) {
		echo 'codereview: warning: cannot find plan9port-review in netrc' >[1=2]
	}
	if(! git status | 9 grep 'nothing to commit, working directory clean' >/dev/null) {
		echo 'codereview: warning: local changes not yet committed' >[1=2]
		git status
	}
	$git push https://plan9port-review.googlesource.com/plan9 HEAD:refs/for/master >[2=1] | 9 sed 's/.*//'

case sync
	shift
	if(! ~ $#* 0) {
		echo 'usage: codereview sync' >[1=2]
		exit usage
	}
	$git fetch -q
	
	branch=`{git branch -l | 9 sed -n 's/^\* //p'}
	if(~ $branch master) {
		$git merge -q --ff-only origin/master
		exit $status
	}

	if(~ `{git merge-base HEAD HEAD} `{git merge-base HEAD master}) {
		# no commit on branch
		git merge -q --ff-only origin/master
		exit $status
	}

	# Exactly this commit in master. Fast-forward from master and delete this branch.
	if(git branch -r --contains HEAD | 9 grep '^ *origin/master$' >/dev/null) {
		$git checkout -q master
		$git merge -q --ff-only origin/master
		$git branch -q -d $branch
		exit $status
	}
	
	changeid=`{git log -n 1 | 9 sed -n 's/^    Change-Id: //p'}
	if(~ $#changeid 0) {
		echo 'codereview: cannot find change id'
		exit changeid
	}

	if(git log --grep 'Change-Id: '$changeid origin/master | 9 grep . >/dev/null) {
		# Something like this got submitted.
		$git checkout -q master
		$git merge -q --ff-only origin/master
		echo 'Change submitted but perhaps not identical to your copy.' >[1=2]
		echo 'To remove old copy:' git branch -d $branch >[1=2]
		exit 1
	}
	
	if(git branch -r --contains master | 9 grep '^ *origin/master$' >/dev/null)
		$git branch -f master origin/master
	$git rebase -q origin/master

case *
	echo 'codereview: unrecognized command '$1 >[1=2]
	exit usage
}
