OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import ast | 5 import ast |
6 import contextlib | 6 import contextlib |
7 import fnmatch | 7 import fnmatch |
8 import json | 8 import json |
9 import os | 9 import os |
10 import pipes | 10 import pipes |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 with zipfile.ZipFile(output, 'w') as outfile: | 229 with zipfile.ZipFile(output, 'w') as outfile: |
230 for root, _, files in os.walk(base_dir): | 230 for root, _, files in os.walk(base_dir): |
231 for f in files: | 231 for f in files: |
232 path = os.path.join(root, f) | 232 path = os.path.join(root, f) |
233 archive_path = os.path.relpath(path, base_dir) | 233 archive_path = os.path.relpath(path, base_dir) |
234 CheckZipPath(archive_path) | 234 CheckZipPath(archive_path) |
235 outfile.write(path, archive_path) | 235 outfile.write(path, archive_path) |
236 | 236 |
237 | 237 |
238 def MergeZips(output, inputs, exclude_patterns=None): | 238 def MergeZips(output, inputs, exclude_patterns=None): |
| 239 added_names = set() |
239 def Allow(name): | 240 def Allow(name): |
240 if exclude_patterns is not None: | 241 if exclude_patterns is not None: |
241 for p in exclude_patterns: | 242 for p in exclude_patterns: |
242 if fnmatch.fnmatch(name, p): | 243 if fnmatch.fnmatch(name, p): |
243 return False | 244 return False |
244 return True | 245 return True |
245 | 246 |
246 with zipfile.ZipFile(output, 'w') as out_zip: | 247 with zipfile.ZipFile(output, 'w') as out_zip: |
247 for in_file in inputs: | 248 for in_file in inputs: |
248 with zipfile.ZipFile(in_file, 'r') as in_zip: | 249 with zipfile.ZipFile(in_file, 'r') as in_zip: |
249 for name in in_zip.namelist(): | 250 for name in in_zip.namelist(): |
250 if Allow(name): | 251 if name not in added_names and Allow(name): |
251 out_zip.writestr(name, in_zip.read(name)) | 252 out_zip.writestr(name, in_zip.read(name)) |
| 253 added_names.add(name) |
252 | 254 |
253 | 255 |
254 def PrintWarning(message): | 256 def PrintWarning(message): |
255 print 'WARNING: ' + message | 257 print 'WARNING: ' + message |
256 | 258 |
257 | 259 |
258 def PrintBigWarning(message): | 260 def PrintBigWarning(message): |
259 print '***** ' * 8 | 261 print '***** ' * 8 |
260 PrintWarning(message) | 262 PrintWarning(message) |
261 print '***** ' * 8 | 263 print '***** ' * 8 |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
365 file_jsons[file_path] = ReadJson(file_path) | 367 file_jsons[file_path] = ReadJson(file_path) |
366 | 368 |
367 expansion = file_jsons[file_path] | 369 expansion = file_jsons[file_path] |
368 for k in lookup_path[1:]: | 370 for k in lookup_path[1:]: |
369 expansion = expansion[k] | 371 expansion = expansion[k] |
370 | 372 |
371 new_args[i] = arg[:match.start()] + str(expansion) | 373 new_args[i] = arg[:match.start()] + str(expansion) |
372 | 374 |
373 return new_args | 375 return new_args |
374 | 376 |
OLD | NEW |