| OLD | NEW | 
|---|
|  | (Empty) | 
| 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 def DoZip(inputs, zip_inputs, output, base_dir): |  | 
| 17   files = [] |  | 
| 18   with zipfile.ZipFile(output, 'w') as outfile: |  | 
| 19     for f in inputs: |  | 
| 20       file_name = os.path.relpath(f, base_dir) |  | 
| 21       files.append(file_name) |  | 
| 22       outfile.write(f, file_name) |  | 
| 23     for zf_name in zip_inputs: |  | 
| 24       with zipfile.ZipFile(zf_name, 'r') as zf: |  | 
| 25         for f in zf.namelist(): |  | 
| 26           if f not in files: |  | 
| 27             files.append(f) |  | 
| 28             with zf.open(f) as zff: |  | 
| 29               outfile.writestr(f, zff.read()) |  | 
| 30 |  | 
| 31 |  | 
| 32 def main(): |  | 
| 33   parser = optparse.OptionParser() |  | 
| 34 |  | 
| 35   parser.add_option('--inputs', help='List of files to archive.') |  | 
| 36   parser.add_option('--zip-inputs', help='List of zip files to re-archive.') |  | 
| 37   parser.add_option('--output', help='Path to output archive.') |  | 
| 38   parser.add_option('--base-dir', |  | 
| 39                     help='If provided, the paths in the archive will be ' |  | 
| 40                     'relative to this directory', default='.') |  | 
| 41 |  | 
| 42   options, _ = parser.parse_args() |  | 
| 43 |  | 
| 44   inputs = ast.literal_eval(options.inputs) |  | 
| 45   zip_inputs = [] |  | 
| 46   if options.zip_inputs: |  | 
| 47     zip_inputs = ast.literal_eval(options.zip_inputs) |  | 
| 48   output = options.output |  | 
| 49   base_dir = options.base_dir |  | 
| 50 |  | 
| 51   DoZip(inputs, zip_inputs, output, base_dir) |  | 
| 52 |  | 
| 53 if __name__ == '__main__': |  | 
| 54   sys.exit(main()) |  | 
| OLD | NEW | 
|---|