Index: third_party/gsutil/gslib/__init__.py |
diff --git a/third_party/gsutil/gslib/__init__.py b/third_party/gsutil/gslib/__init__.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b9cb647a1063ded3fdca9eda5289a6fb9cfbdb30 |
--- /dev/null |
+++ b/third_party/gsutil/gslib/__init__.py |
@@ -0,0 +1,119 @@ |
+# -*- coding: utf-8 -*- |
+# Copyright 2010 Google Inc. All Rights Reserved. |
+# |
+# Permission is hereby granted, free of charge, to any person obtaining a |
+# copy of this software and associated documentation files (the |
+# "Software"), to deal in the Software without restriction, including |
+# without limitation the rights to use, copy, modify, merge, publish, dis- |
+# tribute, sublicense, and/or sell copies of the Software, and to permit |
+# persons to whom the Software is furnished to do so, subject to the fol- |
+# lowing conditions: |
+# |
+# The above copyright notice and this permission notice shall be included |
+# in all copies or substantial portions of the Software. |
+# |
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- |
+# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT |
+# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
+# IN THE SOFTWARE. |
+"""Package marker file.""" |
+ |
+from __future__ import absolute_import |
+ |
+import os |
+import pkgutil |
+import sys |
+import tempfile |
+ |
+import gslib.exception |
+ |
+coverage_outfile = os.getenv('GSUTIL_COVERAGE_OUTPUT_FILE', None) |
+if coverage_outfile: |
+ try: |
+ import coverage # pylint: disable=g-import-not-at-top |
+ coverage_controller = coverage.coverage( |
+ data_file=coverage_outfile, data_suffix=True, auto_data=True, |
+ source=['gslib'], omit=['gslib/third_party/*', 'gslib/tests/*', |
+ tempfile.gettempdir() + '*']) |
+ coverage_controller.start() |
+ except ImportError: |
+ pass |
+ |
+ |
+# Directory containing the gslib module. |
+GSLIB_DIR = os.path.dirname(os.path.realpath(__file__)) |
+# Path to gsutil executable. This assumes gsutil is the running script. |
+GSUTIL_PATH = os.path.realpath(sys.argv[0]) |
+# The directory that contains the gsutil executable. |
+GSUTIL_DIR = os.path.dirname(GSUTIL_PATH) |
+ |
+# Whether or not this was installed via a package manager like pip, deb, rpm, |
+# etc. If installed by just extracting a tarball or zip file, this will be |
+# False. |
+IS_PACKAGE_INSTALL = True |
+ |
+# Whether or not this was installed via setup.py develop mode. This creates a |
+# symlink directly to the source directory. |
+IS_EDITABLE_INSTALL = False |
+ |
+# Directory where program files like VERSION and CHECKSUM will be. When |
+# installed via tarball, this is the gsutil directory, but the files are moved |
+# to the gslib directory when installed via setup.py. |
+PROGRAM_FILES_DIR = GSLIB_DIR |
+ |
+# The gslib directory will be underneath the gsutil directory when installed |
+# from a tarball, but somewhere else on the machine if installed via setup.py. |
+if (not os.path.isfile(os.path.join(PROGRAM_FILES_DIR, 'VERSION')) and |
+ os.path.commonprefix((GSUTIL_DIR, GSLIB_DIR)) == GSUTIL_DIR): |
+ IS_PACKAGE_INSTALL = False |
+ PROGRAM_FILES_DIR = GSUTIL_DIR |
+ |
+# If the module was installed from source using editable mode |
+# (i.e. pip install -e) then the files might be one directory up. |
+if not os.path.isfile(os.path.join(PROGRAM_FILES_DIR, 'VERSION')): |
+ PROGRAM_FILES_DIR = os.path.normpath(os.path.join(GSLIB_DIR, '..')) |
+ IS_EDITABLE_INSTALL = True |
+ |
+# If installed via editable mode, we have to add the mock_storage_service |
+# module to the Python path, since the gsutil script path munging is not |
+# executed in this mode. |
+if IS_EDITABLE_INSTALL: |
+ mock_storage_location = os.path.join( |
+ PROGRAM_FILES_DIR, 'third_party', 'boto', 'tests', 'integration', 's3') |
+ sys.path.append(mock_storage_location) |
+ |
+ |
+def _GetFileContents(filename): |
+ """Tries to find the given filename on disk or via pkgutil.get_data. |
+ |
+ Args: |
+ filename: String name of the file. |
+ |
+ Returns: |
+ A tuple containing the absolute path to the requested file and the file's |
+ contents. If the file is not actually on disk, the file path will be None. |
+ """ |
+ fpath = os.path.join(PROGRAM_FILES_DIR, filename) |
+ if os.path.isfile(fpath): |
+ with open(fpath, 'r') as f: |
+ content = f.read() |
+ else: |
+ content = pkgutil.get_data('gslib', filename) |
+ fpath = None |
+ return (fpath, content.strip()) |
+ |
+# Get the version file and store it. |
+VERSION_FILE, VERSION = _GetFileContents('VERSION') |
+if not VERSION: |
+ raise gslib.exception.CommandException( |
+ 'VERSION file not found. Please reinstall gsutil from scratch') |
+__version__ = VERSION |
+ |
+# Get the checksum file and store it. |
+CHECKSUM_FILE, CHECKSUM = _GetFileContents('CHECKSUM') |
+if not CHECKSUM: |
+ raise gslib.exception.CommandException( |
+ 'CHECKSUM file not found. Please reinstall gsutil from scratch') |