mirror of https://github.com/docker/docs.git
				
				
				
			
		
			
				
	
	
		
			57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
| #!/bin/bash
 | |
| 
 | |
| source "$(dirname "$BASH_SOURCE")/.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! :)'
 | |
| elif [ -z "$notDocs" -a $adds -le 1 -a $dels -le 1 ]; then
 | |
| 	echo 'Congratulations!  DCO small-patch-exception material!'
 | |
| 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
 |