github.com/cactusblossom/fabric-ca@v0.0.0-20200611062428-0082fc643826/scripts/check_license (about) 1 #!/bin/bash 2 # 3 # Copyright IBM Corp. All Rights Reserved. 4 # 5 # SPDX-License-Identifier: Apache-2.0 6 # 7 8 function filterGeneratedFiles { 9 for f in $@; do 10 head -n2 $f | grep -qE 'Code generated by.*DO NOT EDIT' || echo $f 11 done 12 } 13 14 function filterExcludedFiles { 15 CHECK=`echo "$CHECK" \ 16 | grep -v "^\.git/" \ 17 | grep -v "^\.build/" \ 18 | grep -v "^vendor/" \ 19 | grep -v "testdata/" \ 20 | grep -v "swagger/" \ 21 | grep -v "^LICENSE$" \ 22 | grep -v "\.png$" \ 23 | grep -v "\.pptx$" \ 24 | grep -v "\.rst$" \ 25 | grep -v "\.txt$" \ 26 | grep -v "\.pem$" \ 27 | grep -v "_sk$" \ 28 | grep -v "\.key$" \ 29 | grep -v "\.gen\.go$" \ 30 | grep -v "^Gopkg\.lock$" \ 31 | grep -v "\.md$" \ 32 | grep -v "\.pb\.go$" \ 33 | grep -v ".gitignore" \ 34 | grep -v "ci.properties" \ 35 | sort -u` 36 37 CHECK=$(filterGeneratedFiles "$CHECK") 38 } 39 40 CHECK=$(git diff --name-only --diff-filter=ACMRTUXB HEAD) 41 filterExcludedFiles 42 if [[ -z "$CHECK" ]]; then 43 LAST_COMMITS=($(git log -2 --pretty=format:"%h")) 44 CHECK=$(git diff-tree --no-commit-id --name-only --diff-filter=ACMRTUXB -r ${LAST_COMMITS[1]} ${LAST_COMMITS[0]}) 45 filterExcludedFiles 46 fi 47 48 if [[ -z "$CHECK" ]]; then 49 echo "All files are excluded from having license headers" 50 exit 0 51 fi 52 53 echo "Checking Go files for license headers ..." 54 missing=`echo "$CHECK" | xargs ls -d 2>/dev/null | xargs grep -L "SPDX-License-Identifier"` 55 if [[ -z "$missing" ]]; then 56 echo "All files have SPDX-License-Identifier headers" 57 exit 0 58 fi 59 echo "The following files are missing SPDX-License-Identifier headers:" 60 echo "$missing" 61 echo 62 echo "Please replace the Apache license header comment text with:" 63 echo "SPDX-License-Identifier: Apache-2.0" 64 65 missing=`echo "$missing" | xargs ls -d 2>/dev/null | xargs grep -L "Apache License"` 66 if [ -z "$missing" ]; then 67 echo "All remaining files have Apache 2.0 headers" 68 exit 0 69 fi 70 71 echo "The following files are missing license headers:" 72 echo "$missing" 73 exit 1