-
Notifications
You must be signed in to change notification settings - Fork 74
/
check-license-headers
executable file
·67 lines (63 loc) · 2.87 KB
/
check-license-headers
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/bin/bash
#
# Copyright (C) Extensible Service Proxy Authors
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
################################################################################
#
# Checks the source code files for proper license headers.
ESP_COPYRIGHT='Copyright (C) Extensible Service Proxy Authors'
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
. ${ROOT}/script/all-utilities \
|| { echo "Cannot load Bash utilities" ; exit 1 ; }
function is_source_code_file() {
first_line="$(head -1 ${1} | xargs --null)"
filename="$(echo ${1} |awk -F / '{print $NF}')"
[[ "${filename}" == 'BUILD' ]] && return 0
[[ "${first_line}" == '#!/bin/bash' ]] && return 0
extension="$(echo ${1} |awk -F . '{if (NF>1) {print $NF}}')"
[[ "${extension}" == "c" ||
"${extension}" == "cc" ||
"${extension}" == "h" ||
"${extension}" == "py" ||
"${extension}" == "go" ||
"${extension}" == "pm" ||
"${extension}" == "bzl" ||
"${extension}" == "t" ]] && return 0
return 1
}
for file in $(git ls-files)
do
base="$(echo ${file} |awk -F / '{print $1}')"
[[ "${base}" == "google" || "${base}" == "third_party" ]] && continue
base3="$(echo ${file} |awk -F / '{print $1 "/" $2 "/" $3}')"
[[ "${base3}" == "tools/src/google" ]] && continue
[[ "$(basename ${file})" == "check-license-headers" ]] && continue
if is_source_code_file "${file}"; then
total_copyright_count="$(head ${file} | grep 'Copyright (C)' | wc -l)"
esp_copyright_count="$(head ${file} | grep "${ESP_COPYRIGHT}" | wc -l)"
[[ "${total_copyright_count}" == 1 && "${esp_copyright_count}" == 1 ]] \
|| error_exit "$file has invalid license headers."
fi
done