123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #!/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
|