| 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 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 184 return device_state.strip() == 'device' | 184 return device_state.strip() == 'device' |
| 185 | 185 |
| 186 | 186 |
| 187 def CheckZipPath(name): | 187 def CheckZipPath(name): |
| 188 if os.path.normpath(name) != name: | 188 if os.path.normpath(name) != name: |
| 189 raise Exception('Non-canonical zip path: %s' % name) | 189 raise Exception('Non-canonical zip path: %s' % name) |
| 190 if os.path.isabs(name): | 190 if os.path.isabs(name): |
| 191 raise Exception('Absolute zip path: %s' % name) | 191 raise Exception('Absolute zip path: %s' % name) |
| 192 | 192 |
| 193 | 193 |
| 194 def ExtractAll(zip_path, path=None, no_clobber=True): | 194 def ExtractAll(zip_path, path=None, no_clobber=True, pattern=None): |
| 195 if path is None: | 195 if path is None: |
| 196 path = os.getcwd() | 196 path = os.getcwd() |
| 197 elif not os.path.exists(path): | 197 elif not os.path.exists(path): |
| 198 MakeDirectory(path) | 198 MakeDirectory(path) |
| 199 | 199 |
| 200 with zipfile.ZipFile(zip_path) as z: | 200 with zipfile.ZipFile(zip_path) as z: |
| 201 for name in z.namelist(): | 201 for name in z.namelist(): |
| 202 if name.endswith('/'): | 202 if name.endswith('/'): |
| 203 continue | 203 continue |
| 204 if pattern is not None: |
| 205 if not fnmatch.fnmatch(name, pattern): |
| 206 continue |
| 204 CheckZipPath(name) | 207 CheckZipPath(name) |
| 205 if no_clobber: | 208 if no_clobber: |
| 206 output_path = os.path.join(path, name) | 209 output_path = os.path.join(path, name) |
| 207 if os.path.exists(output_path): | 210 if os.path.exists(output_path): |
| 208 raise Exception( | 211 raise Exception( |
| 209 'Path already exists from zip: %s %s %s' | 212 'Path already exists from zip: %s %s %s' |
| 210 % (zip_path, name, output_path)) | 213 % (zip_path, name, output_path)) |
| 211 | 214 |
| 212 z.extractall(path=path) | 215 z.extractall(path=path) |
| 213 | 216 |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 file_jsons[file_path] = ReadJson(file_path) | 346 file_jsons[file_path] = ReadJson(file_path) |
| 344 | 347 |
| 345 expansion = file_jsons[file_path] | 348 expansion = file_jsons[file_path] |
| 346 for k in lookup_path[1:]: | 349 for k in lookup_path[1:]: |
| 347 expansion = expansion[k] | 350 expansion = expansion[k] |
| 348 | 351 |
| 349 new_args[i] = arg[:match.start()] + str(expansion) | 352 new_args[i] = arg[:match.start()] + str(expansion) |
| 350 | 353 |
| 351 return new_args | 354 return new_args |
| 352 | 355 |
| OLD | NEW |