Home | History | Annotate | Download | only in gn
      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 """Archives a set of files.
      8 """
      9 
     10 import ast
     11 import optparse
     12 import os
     13 import sys
     14 import zipfile
     15 
     16 sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, 'gyp'))
     17 from util import build_utils
     18 
     19 def DoZip(inputs, output, base_dir):
     20   with zipfile.ZipFile(output, 'w') as outfile:
     21     for f in inputs:
     22       outfile.write(f, os.path.relpath(f, base_dir))
     23 
     24 def main():
     25   parser = optparse.OptionParser()
     26   build_utils.AddDepfileOption(parser)
     27 
     28   parser.add_option('--inputs', help='List of files to archive.')
     29   parser.add_option('--output', help='Path to output archive.')
     30   parser.add_option('--base-dir',
     31                     help='If provided, the paths in the archive will be '
     32                     'relative to this directory', default='.')
     33 
     34   options, _ = parser.parse_args()
     35 
     36   inputs = ast.literal_eval(options.inputs)
     37   output = options.output
     38   base_dir = options.base_dir
     39 
     40   DoZip(inputs, output, base_dir)
     41 
     42   if options.depfile:
     43     build_utils.WriteDepfile(
     44         options.depfile,
     45         build_utils.GetPythonDependencies())
     46 
     47 
     48 if __name__ == '__main__':
     49   sys.exit(main())
     50