OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """Create files with copyright boilerplate and header include guards. | 6 """Create files with copyright boilerplate and header include guards. |
7 | 7 |
8 Usage: tools/boilerplate.py path/to/file.{h,cc} | 8 Usage: tools/boilerplate.py path/to/file.{h,cc} |
9 """ | 9 """ |
10 | 10 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 | 53 |
54 def _RemoveTestSuffix(filename): | 54 def _RemoveTestSuffix(filename): |
55 base, _ = os.path.splitext(filename) | 55 base, _ = os.path.splitext(filename) |
56 suffixes = [ '_test', '_unittest', '_browsertest' ] | 56 suffixes = [ '_test', '_unittest', '_browsertest' ] |
57 for suffix in suffixes: | 57 for suffix in suffixes: |
58 l = len(suffix) | 58 l = len(suffix) |
59 if base[-l:] == suffix: | 59 if base[-l:] == suffix: |
60 return base[:-l] | 60 return base[:-l] |
61 return base | 61 return base |
62 | 62 |
| 63 |
| 64 def _IsIOSFile(filename): |
| 65 if os.path.splitext(os.path.basename(filename))[0].endswith('_ios'): |
| 66 return True |
| 67 if 'ios' in filename.split(os.path.sep): |
| 68 return True |
| 69 return False |
| 70 |
| 71 |
63 def _CppImplementation(filename): | 72 def _CppImplementation(filename): |
64 return '\n#include "' + _RemoveTestSuffix(filename) + '.h"\n' | 73 return '\n#include "' + _RemoveTestSuffix(filename) + '.h"\n' |
65 | 74 |
66 | 75 |
67 def _ObjCppImplementation(filename): | 76 def _ObjCppImplementation(filename): |
68 return '\n#import "' + _RemoveTestSuffix(filename) + '.h"\n' | 77 implementation = '\n#import "' + _RemoveTestSuffix(filename) + '.h"\n' |
| 78 if not _IsIOSFile(filename): |
| 79 return implementation |
| 80 implementation += '\n' |
| 81 implementation += '#if !defined(__has_feature) || !__has_feature(objc_arc)\n' |
| 82 implementation += '#error "This file requires ARC support."\n' |
| 83 implementation += '#endif\n' |
| 84 return implementation |
69 | 85 |
70 | 86 |
71 def _CreateFile(filename): | 87 def _CreateFile(filename): |
72 contents = _GetHeader(filename) + '\n' | 88 contents = _GetHeader(filename) + '\n' |
73 | 89 |
74 if filename.endswith('.h'): | 90 if filename.endswith('.h'): |
75 contents += _CppHeader(filename) | 91 contents += _CppHeader(filename) |
76 elif filename.endswith('.cc'): | 92 elif filename.endswith('.cc'): |
77 contents += _CppImplementation(filename) | 93 contents += _CppImplementation(filename) |
78 elif filename.endswith('.mm'): | 94 elif filename.endswith('.mm'): |
(...skipping 20 matching lines...) Expand all Loading... |
99 if os.path.exists(f): | 115 if os.path.exists(f): |
100 print >> sys.stderr, 'A file at path %s already exists' % f | 116 print >> sys.stderr, 'A file at path %s already exists' % f |
101 return 2 | 117 return 2 |
102 | 118 |
103 for f in files: | 119 for f in files: |
104 _CreateFile(f) | 120 _CreateFile(f) |
105 | 121 |
106 | 122 |
107 if __name__ == '__main__': | 123 if __name__ == '__main__': |
108 sys.exit(Main()) | 124 sys.exit(Main()) |
OLD | NEW |