OLD | NEW |
---|---|
(Empty) | |
1 #!/usr/bin/python | |
2 | |
3 ''' | |
4 Copyright 2014 Google Inc. | |
5 | |
6 Use of this source code is governed by a BSD-style license that can be | |
7 found in the LICENSE file. | |
8 ''' | |
9 | |
10 import os | |
11 import optparse | |
12 import re | |
13 import posixpath | |
bungeman-skia
2014/11/13 18:13:38
p should come before r (except in neighbor and way
| |
14 | |
15 | |
16 def is_ignored(full_path, ignore_list): | |
17 for ignore_path in ignore_list: | |
18 if re.match(full_path, ignore_path, re.I): | |
19 return True | |
20 return False | |
21 | |
22 | |
23 def find_header_files(include_dirs, ignore_list): | |
24 """Return a list of all '.h' files in top_dir. | |
25 | |
26 Args: | |
27 include_dirs: Paths to the directories within which to recursively search | |
28 for files ending in '.h' | |
29 ignore_list: Paths to both files and directories that are to be excluded | |
30 from the search for headers | |
31 | |
32 Returns: | |
33 A list of all the files inside include_dirs that end in '.h', relative to | |
34 their respective include_dir that are not explicitly ignored. | |
35 """ | |
36 headers = [] | |
37 for top_dir in include_dirs: | |
38 for filename in os.listdir(top_dir): | |
39 full_path = posixpath.join(top_dir, filename) | |
40 if is_ignored(full_path, ignore_list): | |
41 continue | |
42 elif os.path.isdir(full_path): | |
43 nested_headers = find_header_files([full_path], ignore_list) | |
44 for nested_header in nested_headers: | |
45 headers.append(os.path.join(filename, nested_header)) | |
46 elif filename.endswith('.h'): | |
47 headers.append(filename) | |
48 return headers | |
49 | |
50 | |
51 def GenerateIncludeCPP(output_file, include_dirs, ignore_list): | |
52 headers = find_header_files(include_dirs, ignore_list) | |
53 | |
54 # Emit resulting source file. | |
55 with open(os.path.join(os.getcwd(), output_file), "w+") as output: | |
56 for header in headers: | |
57 output.write("#include <%s>\n" % header) | |
58 | |
59 | |
60 def main(): | |
61 parser = optparse.OptionParser() | |
62 parser.add_option("--ignore", action="store", type="string", dest="ignore", | |
63 help="file to write the processed sources array to.") | |
64 parser.set_usage("""generate_include_cpp out.cpp include_dir | |
65 out.cpp: C++ code to be generated. | |
66 include_dirs: directories to traverse for include files""") | |
67 (options, args) = parser.parse_args() | |
68 | |
69 GenerateIncludeCPP(args[0], args[1:], options.ignore.split()) | |
70 | |
71 | |
72 if __name__ == "__main__": | |
73 main() | |
OLD | NEW |