Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(432)

Side by Side Diff: tools/boilerplate.py

Issue 2727903004: Update boilerplate.py to add ARC header guards to iOS ObjCpp files. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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())
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698