#!/usr/bin/env bash

export SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "${SCRIPTDIR}/.validate"

adds=$(validate_diff --numstat | awk '{ s += $1 } END { print s }')
dels=$(validate_diff --numstat | awk '{ s += $2 } END { print s }')
#notDocs="$(validate_diff --numstat | awk '$3 !~ /^docs\// { print $3 }')"

: ${adds:=0}
: ${dels:=0}

# "Username may only contain alphanumeric characters or dashes and cannot begin with a dash"
githubUsernameRegex='[a-zA-Z0-9][a-zA-Z0-9-]+'

# https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
dcoPrefix='Signed-off-by:'
dcoRegex="^(Docker-DCO-1.1-)?$dcoPrefix ([^<]+) <([^<>@]+@[^<>]+)>( \\(github: ($githubUsernameRegex)\\))?$"

check_dco() {
	grep -qE "$dcoRegex"
}

if [ $adds -eq 0 -a $dels -eq 0 ]; then
	echo '0 adds, 0 deletions; nothing to validate! :)'
else
	commits=( $(validate_log --format='format:%H%n') )
	badCommits=()
	for commit in "${commits[@]}"; do
		if [ -z "$(git log -1 --format='format:' --name-status "$commit")" ]; then
			# no content (ie, Merge commit, etc)
			continue
		fi
		if ! git log -1 --format='format:%B' "$commit" | check_dco; then
			badCommits+=( "$commit" )
		fi
	done
	if [ ${#badCommits[@]} -eq 0 ]; then
		echo "Congratulations!  All commits are properly signed with the DCO!"
	else
		{
			echo "These commits do not have a proper '$dcoPrefix' marker:"
			for commit in "${badCommits[@]}"; do
				echo " - $commit"
			done
			echo
			echo 'Please amend each commit to include a properly formatted DCO marker.'
			echo
			echo 'Visit the following URL for information about the Docker DCO:'
			echo ' https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work'
			echo
		} >&2
		false
	fi
fi
