Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(216)

Side by Side Diff: mojo/public/tools/gn/zip.py

Issue 2250183003: Make the fuchsia mojo/public repo the source of truth. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mojo/public/tools/gn/unzip.py ('k') | mojo/public/tools/ls.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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, link_inputs, zip_inputs, output, base_dir):
17 files = []
18 with zipfile.ZipFile(output, 'w', zipfile.ZIP_DEFLATED) 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 f in link_inputs:
24 realf = os.path.realpath(f) # Resolve symlinks.
25 file_name = os.path.relpath(realf, base_dir)
26 files.append(file_name)
27 outfile.write(realf, file_name)
28 for zf_name in zip_inputs:
29 with zipfile.ZipFile(zf_name, 'r') as zf:
30 for f in zf.namelist():
31 if f not in files:
32 files.append(f)
33 with zf.open(f) as zff:
34 outfile.writestr(f, zff.read())
35
36
37 def main():
38 parser = optparse.OptionParser()
39
40 parser.add_option('--inputs', help='List of files to archive.')
41 parser.add_option('--link-inputs',
42 help='List of files to archive. Symbolic links are resolved.')
43 parser.add_option('--zip-inputs', help='List of zip files to re-archive.')
44 parser.add_option('--output', help='Path to output archive.')
45 parser.add_option('--base-dir',
46 help='If provided, the paths in the archive will be '
47 'relative to this directory', default='.')
48
49 options, _ = parser.parse_args()
50
51 inputs = []
52 if (options.inputs):
53 inputs = ast.literal_eval(options.inputs)
54 link_inputs = []
55 if options.link_inputs:
56 link_inputs = ast.literal_eval(options.link_inputs)
57 zip_inputs = []
58 if options.zip_inputs:
59 zip_inputs = ast.literal_eval(options.zip_inputs)
60 output = options.output
61 base_dir = options.base_dir
62
63 DoZip(inputs, link_inputs, zip_inputs, output, base_dir)
64
65 if __name__ == '__main__':
66 sys.exit(main())
OLDNEW
« no previous file with comments | « mojo/public/tools/gn/unzip.py ('k') | mojo/public/tools/ls.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698