| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright 2014 The Chromium Authors. All rights reserved. | 2 # Copyright 2014 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 """A utility script for downloading versioned Syzygy binaries.""" | 6 """A utility script for downloading versioned Syzygy binaries.""" |
| 7 | 7 |
| 8 import cStringIO | 8 import cStringIO |
| 9 import hashlib | 9 import hashlib |
| 10 import errno | 10 import errno |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 raise RuntimeError('Failed to download "%s".' % url) | 255 raise RuntimeError('Failed to download "%s".' % url) |
| 256 return response.read() | 256 return response.read() |
| 257 | 257 |
| 258 | 258 |
| 259 def _InstallBinaries(options, deleted={}): | 259 def _InstallBinaries(options, deleted={}): |
| 260 """Installs Syzygy binaries. This assumes that the output directory has | 260 """Installs Syzygy binaries. This assumes that the output directory has |
| 261 already been cleaned, as it will refuse to overwrite existing files.""" | 261 already been cleaned, as it will refuse to overwrite existing files.""" |
| 262 contents = {} | 262 contents = {} |
| 263 state = { 'revision': options.revision, 'contents': contents } | 263 state = { 'revision': options.revision, 'contents': contents } |
| 264 archive_url = _SYZYGY_ARCHIVE_URL % { 'revision': options.revision } | 264 archive_url = _SYZYGY_ARCHIVE_URL % { 'revision': options.revision } |
| 265 for (base, name, subdir, filt) in _RESOURCES: | 265 if options.resources: |
| 266 resources = [(resource, resource, '', None) |
| 267 for resource in options.resources] |
| 268 else: |
| 269 resources = _RESOURCES |
| 270 for (base, name, subdir, filt) in resources: |
| 266 # Create the output directory if it doesn't exist. | 271 # Create the output directory if it doesn't exist. |
| 267 fulldir = os.path.join(options.output_dir, subdir) | 272 fulldir = os.path.join(options.output_dir, subdir) |
| 268 if os.path.isfile(fulldir): | 273 if os.path.isfile(fulldir): |
| 269 raise Exception('File exists where a directory needs to be created: %s' % | 274 raise Exception('File exists where a directory needs to be created: %s' % |
| 270 fulldir) | 275 fulldir) |
| 271 if not os.path.exists(fulldir): | 276 if not os.path.exists(fulldir): |
| 272 _LOGGER.debug('Creating directory: %s', fulldir) | 277 _LOGGER.debug('Creating directory: %s', fulldir) |
| 273 if not options.dry_run: | 278 if not options.dry_run: |
| 274 os.makedirs(fulldir) | 279 os.makedirs(fulldir) |
| 275 | 280 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 option_parser.add_option('--output-dir', type='string', | 319 option_parser.add_option('--output-dir', type='string', |
| 315 help='The path where the binaries will be replaced. Existing binaries ' | 320 help='The path where the binaries will be replaced. Existing binaries ' |
| 316 'will only be overwritten if not up to date.') | 321 'will only be overwritten if not up to date.') |
| 317 option_parser.add_option('--overwrite', action='store_true', default=False, | 322 option_parser.add_option('--overwrite', action='store_true', default=False, |
| 318 help='If specified then the installation will happily delete and rewrite ' | 323 help='If specified then the installation will happily delete and rewrite ' |
| 319 'the entire output directory, blasting any local changes.') | 324 'the entire output directory, blasting any local changes.') |
| 320 option_parser.add_option('--revision', type='string', | 325 option_parser.add_option('--revision', type='string', |
| 321 help='The SVN revision or GIT hash associated with the required version.') | 326 help='The SVN revision or GIT hash associated with the required version.') |
| 322 option_parser.add_option('--revision-file', type='string', | 327 option_parser.add_option('--revision-file', type='string', |
| 323 help='A text file containing an SVN revision or GIT hash.') | 328 help='A text file containing an SVN revision or GIT hash.') |
| 329 option_parser.add_option('--resource', type='string', action='append', |
| 330 dest='resources', help='A resource to be downloaded.') |
| 324 option_parser.add_option('--verbose', dest='log_level', action='store_const', | 331 option_parser.add_option('--verbose', dest='log_level', action='store_const', |
| 325 default=logging.INFO, const=logging.DEBUG, | 332 default=logging.INFO, const=logging.DEBUG, |
| 326 help='Enables verbose logging.') | 333 help='Enables verbose logging.') |
| 327 option_parser.add_option('--quiet', dest='log_level', action='store_const', | 334 option_parser.add_option('--quiet', dest='log_level', action='store_const', |
| 328 default=logging.INFO, const=logging.ERROR, | 335 default=logging.INFO, const=logging.ERROR, |
| 329 help='Disables all output except for errors.') | 336 help='Disables all output except for errors.') |
| 330 options, args = option_parser.parse_args() | 337 options, args = option_parser.parse_args() |
| 331 if args: | 338 if args: |
| 332 option_parser.error('Unexpected arguments: %s' % args) | 339 option_parser.error('Unexpected arguments: %s' % args) |
| 333 if not options.output_dir: | 340 if not options.output_dir: |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 435 # Install the new binaries. In a dry-run this will actually download the | 442 # Install the new binaries. In a dry-run this will actually download the |
| 436 # archives, but it won't write anything to disk. | 443 # archives, but it won't write anything to disk. |
| 437 state = _InstallBinaries(options, deleted) | 444 state = _InstallBinaries(options, deleted) |
| 438 | 445 |
| 439 # Build and save the state for the directory. | 446 # Build and save the state for the directory. |
| 440 _SaveState(options.output_dir, state, options.dry_run) | 447 _SaveState(options.output_dir, state, options.dry_run) |
| 441 | 448 |
| 442 | 449 |
| 443 if __name__ == '__main__': | 450 if __name__ == '__main__': |
| 444 main() | 451 main() |
| OLD | NEW |