1# -*- coding: utf-8 -*-
2
3#-------------------------------------------------------------------------
4# drawElements Quality Program utilities
5# --------------------------------------
6#
7# Copyright 2015 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 os
24import re
25import sys
26import time
27import fnmatch
28
29SRC_FILE_PATTERNS		= [ "*.c", "*.h", "*.cpp", "*.hpp", "*.inl", "*.java", "*.aidl", "*.py" ]
30COPYRIGHT_PATTERN		= r'Copyright \(C\) ([0-9]{4})(-[0-9]{4})? drawElements Ltd.'
31COPYRIGHT_REPLACEMENT	= r'Copyright (C) \1-' + time.strftime("%Y") + r' drawElements Ltd.'
32
33def isSrcFile (filename):
34	for pattern in SRC_FILE_PATTERNS:
35		if fnmatch.fnmatch(filename, pattern):
36			return True
37	return False
38
39def findSrcFiles (dir):
40	srcFiles = []
41	for root, dirs, files in os.walk(dir):
42		for file in files:
43			if isSrcFile(file):
44				srcFiles.append(os.path.join(root, file))
45	return srcFiles
46
47def processFile (filename):
48	print(filename)
49	file = open(filename, "rb")
50	data = file.read()
51	file.close()
52	data = re.sub(COPYRIGHT_PATTERN, COPYRIGHT_REPLACEMENT, data)
53	file = open(filename, "wb")
54	file.write(data)
55	file.close()
56
57def processDir (dir):
58	srcFiles = findSrcFiles(dir)
59	for file in srcFiles:
60		processFile(file)
61
62if __name__ == "__main__":
63	if len(sys.argv) < 2:
64		print(sys.argv[0] + ": [directory]")
65	else:
66		processDir(sys.argv[1])
67