github.com/trustbloc/kms-go@v1.1.2/scripts/check_license.sh (about) 1 #!/bin/bash 2 # 3 # Copyright IBM Corp, SecureKey Technologies Inc. All Rights Reserved. 4 # 5 # SPDX-License-Identifier: Apache-2.0 6 # 7 8 echo "Running $0" 9 10 function filterExcludedFiles { 11 CHECK=`echo "$CHECK" | grep -v .png$ | grep -v .rst$ | grep -v ^.git/ \ 12 | grep -v .pem$ | grep -v .block$ | grep -v .tx$ | grep -v ^LICENSE$ | grep -v _sk$ \ 13 | grep -v .key$ | grep -v .crt$ | grep -v \\.gen.go$ | grep -v \\.json$ | grep -v Gopkg.lock$ \ 14 | grep -v .md$ | grep -v ^vendor/ | grep -v ^build/ | grep -v .pb.go$ | grep -v ci.properties$ \ 15 | grep -v go.sum$ | grep -v gomocks | grep -v \\.jsonld$ | grep -v testdata/ | grep -v third_party/ | sort -u` 16 } 17 18 CHECK=$(git diff --name-only --diff-filter=ACMRTUXB HEAD) 19 REMOTE_REF=$(git log -1 --pretty=format:"%d" | grep '[(].*\/' | wc -l) 20 21 # If CHECK is empty then there is no working directory changes: fallback to last two commits. 22 # Else if REMOTE_REF=0 then working copy commits are even with remote: only use the working copy changes. 23 # Otherwise assume that the change is amending the previous commit: use both last two commit and working copy changes. 24 if [[ -z "${CHECK}" ]] || [[ "${REMOTE_REF}" -eq 0 ]]; then 25 if [[ ! -z "${CHECK}" ]]; then 26 echo "Examining last commit and working directory changes" 27 CHECK+=$'\n' 28 else 29 echo "Examining last commit changes" 30 fi 31 32 LAST_COMMITS=($(git log -2 --pretty=format:"%h")) 33 CHECK+=$(git diff-tree --no-commit-id --name-only --diff-filter=ACMRTUXB -r ${LAST_COMMITS[1]} ${LAST_COMMITS[0]}) 34 else 35 echo "Examining working directory changes" 36 fi 37 38 filterExcludedFiles 39 40 if [[ -z "$CHECK" ]]; then 41 echo "All files are excluded from having license headers" 42 exit 0 43 fi 44 45 missing=`echo "$CHECK" | xargs ls -d 2>/dev/null | xargs grep -L "SPDX-License-Identifier"` 46 if [[ -z "$missing" ]]; then 47 echo "All files have SPDX-License-Identifier headers" 48 exit 0 49 fi 50 echo "The following files are missing SPDX-License-Identifier headers:" 51 echo "$missing" 52 echo 53 echo "Please replace the Apache license header comment text with:" 54 echo "SPDX-License-Identifier: Apache-2.0" 55 56 echo 57 echo "Checking committed files for traditional Apache License headers ..." 58 missing=`echo "$missing" | xargs ls -d 2>/dev/null | xargs grep -L "http://www.apache.org/licenses/LICENSE-2.0"` 59 if [[ -z "$missing" ]]; then 60 echo "All remaining files have Apache 2.0 headers" 61 exit 0 62 fi 63 echo "The following files are missing traditional Apache 2.0 headers:" 64 echo "$missing" 65 echo "Fatal Error - All files must have a license header" 66 exit 1