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

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

Issue 1618243004: Use gn_helpers to deserialize GN lists. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 10 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/mojo_application.gni ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2014 The Chromium Authors. All rights reserved. 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 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 # TODO(brettw) bug 582594: merge this with build/android/gn/zip.py and update
8 # callers to use the existing template rather than invoking this directly.
9
7 """Archives a set of files. 10 """Archives a set of files.
8 """ 11 """
9 12
10 import ast
11 import optparse 13 import optparse
12 import os 14 import os
13 import sys 15 import sys
14 import zipfile 16 import zipfile
15 17
18 sys.path.append(os.path.join(os.path.dirname(__file__),
19 os.pardir, os.pardir, os.pardir, os.pardir,
20 "build"))
21 import gn_helpers
22
16 def DoZip(inputs, link_inputs, zip_inputs, output, base_dir): 23 def DoZip(inputs, link_inputs, zip_inputs, output, base_dir):
17 files = [] 24 files = []
18 with zipfile.ZipFile(output, 'w', zipfile.ZIP_DEFLATED) as outfile: 25 with zipfile.ZipFile(output, 'w', zipfile.ZIP_DEFLATED) as outfile:
19 for f in inputs: 26 for f in inputs:
20 file_name = os.path.relpath(f, base_dir) 27 file_name = os.path.relpath(f, base_dir)
21 files.append(file_name) 28 files.append(file_name)
22 outfile.write(f, file_name) 29 outfile.write(f, file_name)
23 for f in link_inputs: 30 for f in link_inputs:
24 realf = os.path.realpath(f) # Resolve symlinks. 31 realf = os.path.realpath(f) # Resolve symlinks.
25 file_name = os.path.relpath(realf, base_dir) 32 file_name = os.path.relpath(realf, base_dir)
26 files.append(file_name) 33 files.append(file_name)
27 outfile.write(realf, file_name) 34 outfile.write(realf, file_name)
28 for zf_name in zip_inputs: 35 for zf_name in zip_inputs:
29 with zipfile.ZipFile(zf_name, 'r') as zf: 36 with zipfile.ZipFile(zf_name, 'r') as zf:
30 for f in zf.namelist(): 37 for f in zf.namelist():
31 if f not in files: 38 if f not in files:
32 files.append(f) 39 files.append(f)
33 with zf.open(f) as zff: 40 with zf.open(f) as zff:
34 outfile.writestr(f, zff.read()) 41 outfile.writestr(f, zff.read())
35 42
36 43
37 def main(): 44 def main():
38 parser = optparse.OptionParser() 45 parser = optparse.OptionParser()
39 46
40 parser.add_option('--inputs', help='List of files to archive.') 47 parser.add_option('--inputs',
48 help='GN format list of files to archive.')
41 parser.add_option('--link-inputs', 49 parser.add_option('--link-inputs',
42 help='List of files to archive. Symbolic links are resolved.') 50 help='GN-format list of files to archive. Symbolic links are resolved.')
43 parser.add_option('--zip-inputs', help='List of zip files to re-archive.') 51 parser.add_option('--zip-inputs',
52 help='GN-format list of zip files to re-archive.')
44 parser.add_option('--output', help='Path to output archive.') 53 parser.add_option('--output', help='Path to output archive.')
45 parser.add_option('--base-dir', 54 parser.add_option('--base-dir',
46 help='If provided, the paths in the archive will be ' 55 help='If provided, the paths in the archive will be '
47 'relative to this directory', default='.') 56 'relative to this directory', default='.')
48 57
49 options, _ = parser.parse_args() 58 options, _ = parser.parse_args()
50 59
51 inputs = [] 60 inputs = []
52 if (options.inputs): 61 if (options.inputs):
53 inputs = ast.literal_eval(options.inputs) 62 parser = gn_helpers.GNValueParser(options.inputs)
63 inputs = parser.ParseList()
64
54 link_inputs = [] 65 link_inputs = []
55 if options.link_inputs: 66 if options.link_inputs:
56 link_inputs = ast.literal_eval(options.link_inputs) 67 parser = gn_helpers.GNValueParser(options.link_inputs)
68 link_inputs = parser.ParseList()
69
57 zip_inputs = [] 70 zip_inputs = []
58 if options.zip_inputs: 71 if options.zip_inputs:
59 zip_inputs = ast.literal_eval(options.zip_inputs) 72 parser = gn_helpers.GNValueParser(options.zip_inputs)
73 zip_inputs = parser.ParseList()
74
60 output = options.output 75 output = options.output
61 base_dir = options.base_dir 76 base_dir = options.base_dir
62 77
63 DoZip(inputs, link_inputs, zip_inputs, output, base_dir) 78 DoZip(inputs, link_inputs, zip_inputs, output, base_dir)
64 79
65 if __name__ == '__main__': 80 if __name__ == '__main__':
66 sys.exit(main()) 81 sys.exit(main())
OLDNEW
« no previous file with comments | « mojo/public/mojo_application.gni ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698