mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	- every execution of dirname costs time - less repeating Signed-off-by: Jörg Thalheim <joerg@higgsboson.tk>
		
			
				
	
	
		
			54 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
source "${MAKEDIR}/.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
 |