blob: 62f41f461973638b4eaddf596ed8c53ec0c8d3a1 [file] [log] [blame]
Pyry Haulos29c3b832016-11-11 07:57:59 -08001# -*- coding: utf-8 -*-
2
3#-------------------------------------------------------------------------
4# drawElements Quality Program utilities
5# --------------------------------------
6#
7# Copyright 2016 The Android Open Source Project
8#
9# Licensed under the Apache License, Version 2.0 (the "License");
10# you may not use this file except in compliance with the License.
11# You may obtain a copy of the License at
12#
13# http://www.apache.org/licenses/LICENSE-2.0
14#
15# Unless required by applicable law or agreed to in writing, software
16# distributed under the License is distributed on an "AS IS" BASIS,
17# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18# See the License for the specific language governing permissions and
19# limitations under the License.
20#
21#-------------------------------------------------------------------------
22
23import sys
24from common import isTextFile
25from fnmatch import fnmatch
26
27LICENSE_APACHE2 = 0
28LICENSE_MIT = 1
29LICENSE_MULTIPLE = 2
30LICENSE_UNKNOWN = 3
31
32LICENSE_KEYS = [
33 # \note Defined this way to avoid triggering license check error on this file
34 ("P" + "ermission is hereby granted, free of charge", LICENSE_MIT),
35 ("L" + "icensed under the Apache License, Version 2.0", LICENSE_APACHE2),
36]
37
38SOURCE_FILES = ["*.py", "*.java", "*.c", "*.h", "*.cpp", "*.hpp"]
39
40def readFile (file):
41 f = open(file, 'rb')
42 c = f.read()
43 f.close()
44 return c
45
46def getFileLicense (file):
47 contents = readFile(file)
48 detected = LICENSE_UNKNOWN
49
50 for searchStr, license in LICENSE_KEYS:
51 if contents.find(searchStr) != -1:
52 if detected != LICENSE_UNKNOWN:
53 detected = LICENSE_MULTIPLE
54 else:
55 detected = license
56
57 return detected
58
59def checkFileLicense (file):
60 license = getFileLicense(file)
61
62 if license == LICENSE_MIT:
63 print "%s: contains MIT license" % file
64 elif license == LICENSE_MULTIPLE:
65 print "%s: contains multiple licenses" % file
66 elif license == LICENSE_UNKNOWN:
Pyry Haulos1adfd7a2016-11-16 10:17:26 -080067 print "%s: missing/unknown license" % file
Pyry Haulos29c3b832016-11-11 07:57:59 -080068
69 return license == LICENSE_APACHE2
70
71def isSourceFile (file):
72 for ptrn in SOURCE_FILES:
73 if fnmatch(file, ptrn):
74 return True
75 return False
76
77def checkLicense (files):
78 error = False
79 for file in files:
80 if isTextFile(file) and isSourceFile(file):
81 if not checkFileLicense(file):
82 error = True
83
84 return not error