| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 | 2 |
| 3 """ | 3 """ |
| 4 Copyright 2014 Google Inc. | 4 Copyright 2014 Google Inc. |
| 5 | 5 |
| 6 Use of this source code is governed by a BSD-style license that can be | 6 Use of this source code is governed by a BSD-style license that can be |
| 7 found in the LICENSE file. | 7 found in the LICENSE file. |
| 8 | 8 |
| 9 Utilities for accessing Google Cloud Storage. | 9 Utilities for accessing Google Cloud Storage. |
| 10 | |
| 11 TODO(epoger): move this into tools/utils for broader use? | |
| 12 """ | 10 """ |
| 13 | 11 |
| 14 # System-level imports | 12 # System-level imports |
| 15 import os | 13 import os |
| 16 import posixpath | 14 import posixpath |
| 17 import sys | 15 import sys |
| 16 |
| 17 # Imports from third-party code |
| 18 TRUNK_DIRECTORY = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) |
| 19 for import_subdir in ['google-api-python-client', 'httplib2', 'oauth2client', |
| 20 'uritemplate-py']: |
| 21 import_dirpath = os.path.join( |
| 22 TRUNK_DIRECTORY, 'third_party', 'externals', import_subdir) |
| 23 if import_dirpath not in sys.path: |
| 24 # We need to insert at the beginning of the path, to make sure that our |
| 25 # imported versions are favored over others that might be in the path. |
| 26 # Also, the google-api-python-client checkout contains an empty |
| 27 # oauth2client directory, which will confuse things unless we insert |
| 28 # our checked-out oauth2client in front of it in the path. |
| 29 sys.path.insert(0, import_dirpath) |
| 18 try: | 30 try: |
| 19 from apiclient.discovery import build as build_service | 31 from googleapiclient.discovery import build as build_service |
| 20 except ImportError: | 32 except ImportError: |
| 21 print ('Missing google-api-python-client. Please install it; directions ' | 33 # TODO(epoger): We are moving toward not needing any dependencies to be |
| 34 # installed at a system level, but in the meanwhile, if developers run into |
| 35 # trouble they can install those system-level dependencies to get unblocked. |
| 36 print ('Missing dependencies of google-api-python-client. Please install ' |
| 37 'google-api-python-client to get those dependencies; directions ' |
| 22 'can be found at https://developers.google.com/api-client-library/' | 38 'can be found at https://developers.google.com/api-client-library/' |
| 23 'python/start/installation') | 39 'python/start/installation . More details in http://skbug.com/2641 ') |
| 24 raise | 40 raise |
| 25 | 41 |
| 26 # Local imports | 42 # Local imports |
| 27 import url_utils | 43 import url_utils |
| 28 | 44 |
| 29 | 45 |
| 30 def download_file(source_bucket, source_path, dest_path, | 46 def download_file(source_bucket, source_path, dest_path, |
| 31 create_subdirs_if_needed=False): | 47 create_subdirs_if_needed=False): |
| 32 """ Downloads a single file from Google Cloud Storage to local disk. | 48 """ Downloads a single file from Google Cloud Storage to local disk. |
| 33 | 49 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 dirs = [] | 88 dirs = [] |
| 73 for dir_fullpath in results.get('prefixes', []): | 89 for dir_fullpath in results.get('prefixes', []): |
| 74 dir_basename = dir_fullpath[subdir_length:] | 90 dir_basename = dir_fullpath[subdir_length:] |
| 75 dirs.append(dir_basename[:-1]) # strip trailing slash | 91 dirs.append(dir_basename[:-1]) # strip trailing slash |
| 76 files = [] | 92 files = [] |
| 77 for file_properties in results.get('items', []): | 93 for file_properties in results.get('items', []): |
| 78 file_fullpath = file_properties['name'] | 94 file_fullpath = file_properties['name'] |
| 79 file_basename = file_fullpath[subdir_length:] | 95 file_basename = file_fullpath[subdir_length:] |
| 80 files.append(file_basename) | 96 files.append(file_basename) |
| 81 return (dirs, files) | 97 return (dirs, files) |
| OLD | NEW |