Index: tools/protoc_wrapper/protoc_wrapper.py |
=================================================================== |
--- tools/protoc_wrapper/protoc_wrapper.py (revision 0) |
+++ tools/protoc_wrapper/protoc_wrapper.py (revision 0) |
@@ -0,0 +1,61 @@ |
+#!/usr/bin/env python |
+# Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+"""A simple wrapper for protoc to add includes in generated cpp headers.""" |
+ |
+import optparse |
+import subprocess |
+import sys |
+ |
+PROTOC_INCLUDE_POINT = '// @@protoc_insertion_point(includes)\n' |
+ |
+def ModifyHeader(header_file, extra_header): |
+ """Adds |extra_header| to |header_file|. Returns 0 on success. |
+ |
+ |extra_header| is the name of the header file to include. |
+ |header_file| is a generated protobuf cpp header. |
+ """ |
+ include_point_found = False |
+ header_contents = [] |
+ with open(header_file) as f: |
+ for line in f: |
+ header_contents.append(line) |
+ if line == PROTOC_INCLUDE_POINT: |
+ extra_header_msg = '#include "%s"\n' % extra_header |
+ header_contents.append(extra_header_msg) |
+ include_point_found = True; |
+ if not include_point_found: |
+ return 1 |
+ |
+ with open(header_file, 'wb') as f: |
+ f.write(''.join(header_contents)) |
+ return 0 |
+ |
+ |
+def main(argv): |
+ parser = optparse.OptionParser() |
+ parser.add_option('--include', dest='extra_header', |
+ help='The extra header to include. This must be specified ' |
+ 'along with --protobuf.') |
+ parser.add_option('--protobuf', dest='generated_header', |
+ help='The c++ protobuf header to add the extra header to. ' |
+ 'This must be specified along with --include.') |
+ (options, args) = parser.parse_args(sys.argv) |
+ if len(args) < 2: |
+ return 1 |
+ |
+ # Run what is hopefully protoc. |
+ ret = subprocess.call(args[1:]) |
+ if ret != 0: |
+ return ret |
+ |
+ # protoc succeeded, check to see if the generated cpp header needs editing. |
+ if not options.extra_header or not options.generated_header: |
+ return 0 |
+ return ModifyHeader(options.generated_header, options.extra_header) |
+ |
+ |
+if __name__ == '__main__': |
+ sys.exit(main(sys.argv)) |
Property changes on: tools/protoc_wrapper/protoc_wrapper.py |
___________________________________________________________________ |
Added: svn:executable |
+ * |
Added: svn:eol-style |
+ LF |