| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 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 """Download files from Google Storage based on SHA1 sums.""" | 6 """Download files from Google Storage based on SHA1 sums.""" |
| 7 | 7 |
| 8 | 8 |
| 9 import hashlib | 9 import hashlib |
| 10 import optparse | 10 import optparse |
| (...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 parser.add_option('-o', '--output', | 367 parser.add_option('-o', '--output', |
| 368 help='Specify the output file name. Defaults to: ' | 368 help='Specify the output file name. Defaults to: ' |
| 369 '(a) Given a SHA1 hash, the name is the SHA1 hash. ' | 369 '(a) Given a SHA1 hash, the name is the SHA1 hash. ' |
| 370 '(b) Given a .sha1 file or directory, the name will ' | 370 '(b) Given a .sha1 file or directory, the name will ' |
| 371 'match (.*).sha1.') | 371 'match (.*).sha1.') |
| 372 parser.add_option('-b', '--bucket', | 372 parser.add_option('-b', '--bucket', |
| 373 help='Google Storage bucket to fetch from.') | 373 help='Google Storage bucket to fetch from.') |
| 374 parser.add_option('-e', '--boto', | 374 parser.add_option('-e', '--boto', |
| 375 help='Specify a custom boto file.') | 375 help='Specify a custom boto file.') |
| 376 parser.add_option('-c', '--no_resume', action='store_true', | 376 parser.add_option('-c', '--no_resume', action='store_true', |
| 377 help='Resume download if file is partially downloaded.') | 377 help='DEPRECATED: Resume download if file is ' |
| 378 'partially downloaded.') |
| 378 parser.add_option('-f', '--force', action='store_true', | 379 parser.add_option('-f', '--force', action='store_true', |
| 379 help='Force download even if local file exists.') | 380 help='Force download even if local file exists.') |
| 380 parser.add_option('-i', '--ignore_errors', action='store_true', | 381 parser.add_option('-i', '--ignore_errors', action='store_true', |
| 381 help='Don\'t throw error if we find an invalid .sha1 file.') | 382 help='Don\'t throw error if we find an invalid .sha1 file.') |
| 382 parser.add_option('-r', '--recursive', action='store_true', | 383 parser.add_option('-r', '--recursive', action='store_true', |
| 383 help='Scan folders recursively for .sha1 files. ' | 384 help='Scan folders recursively for .sha1 files. ' |
| 384 'Must be used with -d/--directory') | 385 'Must be used with -d/--directory') |
| 385 parser.add_option('-t', '--num_threads', default=1, type='int', | 386 parser.add_option('-t', '--num_threads', default=1, type='int', |
| 386 help='Number of downloader threads to run.') | 387 help='Number of downloader threads to run.') |
| 387 parser.add_option('-d', '--directory', action='store_true', | 388 parser.add_option('-d', '--directory', action='store_true', |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 493 # Target is a .sha1 file. | 494 # Target is a .sha1 file. |
| 494 if not input_filename.endswith('.sha1'): | 495 if not input_filename.endswith('.sha1'): |
| 495 parser.error('--sha1_file is specified, but the input filename ' | 496 parser.error('--sha1_file is specified, but the input filename ' |
| 496 'does not end with .sha1, and no --output is specified. ' | 497 'does not end with .sha1, and no --output is specified. ' |
| 497 'Either make sure the input filename has a .sha1 ' | 498 'Either make sure the input filename has a .sha1 ' |
| 498 'extension, or specify --output.') | 499 'extension, or specify --output.') |
| 499 options.output = input_filename[:-5] | 500 options.output = input_filename[:-5] |
| 500 else: | 501 else: |
| 501 parser.error('Unreachable state.') | 502 parser.error('Unreachable state.') |
| 502 | 503 |
| 503 # Check if output file already exists. | |
| 504 if not options.directory and not options.force and not options.no_resume: | |
| 505 if os.path.exists(options.output): | |
| 506 parser.error('Output file %s exists and --no_resume is specified.' | |
| 507 % options.output) | |
| 508 | |
| 509 base_url = 'gs://%s' % options.bucket | 504 base_url = 'gs://%s' % options.bucket |
| 510 | 505 |
| 511 return download_from_google_storage( | 506 return download_from_google_storage( |
| 512 input_filename, base_url, gsutil, options.num_threads, options.directory, | 507 input_filename, base_url, gsutil, options.num_threads, options.directory, |
| 513 options.recursive, options.force, options.output, options.ignore_errors, | 508 options.recursive, options.force, options.output, options.ignore_errors, |
| 514 options.sha1_file, options.verbose, options.auto_platform, | 509 options.sha1_file, options.verbose, options.auto_platform, |
| 515 options.extract) | 510 options.extract) |
| 516 | 511 |
| 517 | 512 |
| 518 if __name__ == '__main__': | 513 if __name__ == '__main__': |
| 519 sys.exit(main(sys.argv)) | 514 sys.exit(main(sys.argv)) |
| OLD | NEW |