|  | # Copyright 2019 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. | 
|  |  | 
|  | """Helper script for use by GN to encode/decode proto files. The protoc tool | 
|  | requires using stdin/stdout for the --encode/--decode options, but that form | 
|  | of processing is not supported by GN. | 
|  | """ | 
|  |  | 
|  | import argparse | 
|  | import subprocess | 
|  |  | 
|  | def Main(): | 
|  | parser = argparse.ArgumentParser() | 
|  | parser.add_argument('--protoc', help='Path to protoc compiler.') | 
|  | parser.add_argument('--infile', required=True, | 
|  | help='Path to input file that will be used as stdin.') | 
|  | parser.add_argument('--outfile', required=True, | 
|  | help='Path to output file that will be used as stdout.') | 
|  | args, passthrough_args = parser.parse_known_args() | 
|  |  | 
|  | stdin = open(args.infile, 'r') | 
|  | stdout = open(args.outfile, 'w') | 
|  |  | 
|  | subprocess.check_call([args.protoc] + passthrough_args, stdin=stdin, | 
|  | stdout=stdout) | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | Main() |