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

Side by Side Diff: download_from_google_storage.py

Issue 17351008: Add an alternate default boto file for bootstrapping source. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: Created 7 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | 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 # 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 24 matching lines...) Expand all
35 class Gsutil(object): 35 class Gsutil(object):
36 """Call gsutil with some predefined settings. This is a convenience object, 36 """Call gsutil with some predefined settings. This is a convenience object,
37 and is also immutable.""" 37 and is also immutable."""
38 def __init__(self, path, boto_path, timeout=None): 38 def __init__(self, path, boto_path, timeout=None):
39 if not os.path.exists(path): 39 if not os.path.exists(path):
40 raise FileNotFoundError('GSUtil not found in %s' % path) 40 raise FileNotFoundError('GSUtil not found in %s' % path)
41 self.path = path 41 self.path = path
42 self.timeout = timeout 42 self.timeout = timeout
43 self.boto_path = boto_path 43 self.boto_path = boto_path
44 44
45 def call(self, *args): 45 def get_sub_env(self):
46 env = os.environ.copy() 46 env = os.environ.copy()
47 if self.boto_path: 47 if self.boto_path:
48 env['AWS_CREDENTIAL_FILE'] = self.boto_path 48 env['AWS_CREDENTIAL_FILE'] = self.boto_path
49 else:
50 custompath = env.get('AWS_CREDENTIAL_FILE', '~/.boto') + '.depot_tools'
51 custompath = os.path.expanduser(custompath)
52 if os.path.exists(custompath):
53 env['AWS_CREDENTIAL_FILE'] = custompath
54
55 return env
56
57 def call(self, *args):
49 return subprocess2.call((sys.executable, self.path) + args, 58 return subprocess2.call((sys.executable, self.path) + args,
50 env=env, 59 env=self.get_sub_env(),
51 timeout=self.timeout) 60 timeout=self.timeout)
52 61
53 def check_call(self, *args): 62 def check_call(self, *args):
54 env = os.environ.copy()
55 if self.boto_path:
56 env['AWS_CREDENTIAL_FILE'] = self.boto_path
57 ((out, err), code) = subprocess2.communicate( 63 ((out, err), code) = subprocess2.communicate(
58 (sys.executable, self.path) + args, 64 (sys.executable, self.path) + args,
59 stdout=subprocess2.PIPE, 65 stdout=subprocess2.PIPE,
60 stderr=subprocess2.PIPE, 66 stderr=subprocess2.PIPE,
61 env=env, 67 env=self.get_sub_env(),
62 timeout=self.timeout) 68 timeout=self.timeout)
63 69
64 # Parse output. 70 # Parse output.
65 status_code_match = re.search('status=([0-9]+)', err) 71 status_code_match = re.search('status=([0-9]+)', err)
66 if status_code_match: 72 if status_code_match:
67 return (int(status_code_match.group(1)), out, err) 73 return (int(status_code_match.group(1)), out, err)
68 if ('You are attempting to access protected data with ' 74 if ('You are attempting to access protected data with '
69 'no configured credentials.' in err): 75 'no configured credentials.' in err):
70 return (403, out, err) 76 return (403, out, err)
71 if 'No such object' in err: 77 if 'No such object' in err:
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 return code 335 return code
330 336
331 return download_from_google_storage( 337 return download_from_google_storage(
332 input_filename, base_url, gsutil, options.num_threads, options.directory, 338 input_filename, base_url, gsutil, options.num_threads, options.directory,
333 options.recursive, options.force, options.output, options.ignore_errors, 339 options.recursive, options.force, options.output, options.ignore_errors,
334 options.sha1_file) 340 options.sha1_file)
335 341
336 342
337 if __name__ == '__main__': 343 if __name__ == '__main__':
338 sys.exit(main(sys.argv)) 344 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698