• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python
2#
3# Copyright 2014 The Chromium Authors. All rights reserved.
4# Use of this source code is governed by a BSD-style license that can be
5# found in the LICENSE file.
6
7"""
8Prepends a given file with a given line. This can be used to add a shebang line
9to a generated file.
10"""
11
12import optparse
13import os
14import shutil
15import sys
16
17
18def main():
19  parser = optparse.OptionParser()
20  parser.add_option('--input', help='The file to prepend the line to.')
21  parser.add_option('--line', help='The line to be prepended.')
22  parser.add_option('--output', help='The output file.')
23
24  options, _ = parser.parse_args()
25  input_path = options.input
26  output_path = options.output
27  line = options.line
28
29  # Warning - this reads all of the input file into memory.
30  with open(output_path, 'w') as output_file:
31    output_file.write(line + '\n')
32    with open(input_path, 'r') as input_file:
33      shutil.copyfileobj(input_file, output_file)
34
35
36if __name__ == '__main__':
37  sys.exit(main())
38