|  | #!/usr/bin/env python | 
|  | # | 
|  | # Copyright 2014 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. | 
|  |  | 
|  | """ | 
|  | Prepends a given file with a given line. This can be used to add a shebang line | 
|  | to a generated file. | 
|  | """ | 
|  |  | 
|  | import optparse | 
|  | import os | 
|  | import shutil | 
|  | import sys | 
|  |  | 
|  |  | 
|  | def main(): | 
|  | parser = optparse.OptionParser() | 
|  | parser.add_option('--input', help='The file to prepend the line to.') | 
|  | parser.add_option('--line', help='The line to be prepended.') | 
|  | parser.add_option('--output', help='The output file.') | 
|  |  | 
|  | options, _ = parser.parse_args() | 
|  | input_path = options.input | 
|  | output_path = options.output | 
|  | line = options.line | 
|  |  | 
|  | # Warning - this reads all of the input file into memory. | 
|  | with open(output_path, 'w') as output_file: | 
|  | output_file.write(line + '\n') | 
|  | with open(input_path, 'r') as input_file: | 
|  | shutil.copyfileobj(input_file, output_file) | 
|  |  | 
|  |  | 
|  | if __name__ == '__main__': | 
|  | sys.exit(main()) |