| Index: third_party/gsutil/gsutil.py
|
| diff --git a/third_party/gsutil/gsutil.py b/third_party/gsutil/gsutil.py
|
| new file mode 100755
|
| index 0000000000000000000000000000000000000000..8df3d7e1382e8ba5a2ff76da93e0357d74b5b0ec
|
| --- /dev/null
|
| +++ b/third_party/gsutil/gsutil.py
|
| @@ -0,0 +1,110 @@
|
| +#!/usr/bin/env python
|
| +# -*- coding: utf-8 -*-
|
| +# Copyright 2010 Google Inc. All Rights Reserved.
|
| +#
|
| +# Licensed under the Apache License, Version 2.0 (the "License");
|
| +# you may not use this file except in compliance with the License.
|
| +# You may obtain a copy of the License at
|
| +#
|
| +# http://www.apache.org/licenses/LICENSE-2.0
|
| +#
|
| +# Unless required by applicable law or agreed to in writing, software
|
| +# distributed under the License is distributed on an "AS IS" BASIS,
|
| +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| +# See the License for the specific language governing permissions and
|
| +# limitations under the License.
|
| +
|
| +"""Wrapper module for running gslib.__main__.main() from the command line."""
|
| +
|
| +import os
|
| +import sys
|
| +import warnings
|
| +
|
| +# TODO: gsutil-beta: Distribute a pylint rc file.
|
| +
|
| +if not (2, 6) <= sys.version_info[:3] < (3,):
|
| + sys.exit('gsutil requires python 2.6 or 2.7.')
|
| +
|
| +
|
| +def UsingCrcmodExtension(crcmod_module):
|
| + return (getattr(crcmod_module, 'crcmod', None) and
|
| + getattr(crcmod_module.crcmod, '_usingExtension', None))
|
| +
|
| +
|
| +def OutputAndExit(message):
|
| + sys.stderr.write('%s\n' % message)
|
| + sys.exit(1)
|
| +
|
| +
|
| +GSUTIL_DIR = os.path.dirname(os.path.abspath(os.path.realpath(__file__)))
|
| +if not GSUTIL_DIR:
|
| + OutputAndExit('Unable to determine where gsutil is installed. Sorry, '
|
| + 'cannot run correctly without this.\n')
|
| +
|
| +# The wrapper script adds all third_party libraries to the Python path, since
|
| +# we don't assume any third party libraries are installed system-wide.
|
| +THIRD_PARTY_DIR = os.path.join(GSUTIL_DIR, 'third_party')
|
| +
|
| +
|
| +# Filter out "module was already imported" warnings that get printed after we
|
| +# add our bundled version of modules to the Python path.
|
| +warnings.filterwarnings('ignore', category=UserWarning,
|
| + message=r'.* httplib2 was already imported from')
|
| +warnings.filterwarnings('ignore', category=UserWarning,
|
| + message=r'.* oauth2client was already imported from')
|
| +
|
| +
|
| +# List of third-party libraries. The first element of the tuple is the name of
|
| +# the directory under third_party and the second element is the subdirectory
|
| +# that needs to be added to sys.path.
|
| +THIRD_PARTY_LIBS = [
|
| + ('oauth2client', ''), # oauth2client and dependencies must be before boto.
|
| + ('pyasn1', ''), # oauth2client dependency
|
| + ('pyasn1-modules', ''), # oauth2client dependency
|
| + ('rsa', ''), # oauth2client dependency
|
| + ('apitools', ''),
|
| + ('boto', ''),
|
| + ('gcs-oauth2-boto-plugin', ''),
|
| + ('httplib2', 'python2'),
|
| + ('protorpc', ''),
|
| + ('python-gflags', ''),
|
| + ('retry-decorator', ''),
|
| + ('six', ''),
|
| + ('socksipy-branch', ''),
|
| +]
|
| +for libdir, subdir in THIRD_PARTY_LIBS:
|
| + if not os.path.isdir(os.path.join(THIRD_PARTY_DIR, libdir)):
|
| + OutputAndExit(
|
| + 'There is no %s library under the gsutil third-party directory (%s).\n'
|
| + 'The gsutil command cannot work properly when installed this way.\n'
|
| + 'Please re-install gsutil per the installation instructions.' % (
|
| + libdir, THIRD_PARTY_DIR))
|
| + sys.path.insert(0, os.path.join(THIRD_PARTY_DIR, libdir, subdir))
|
| +
|
| +# The wrapper script adds all third_party libraries to the Python path, since
|
| +# we don't assume any third party libraries are installed system-wide.
|
| +THIRD_PARTY_DIR = os.path.join(GSUTIL_DIR, 'third_party')
|
| +
|
| +CRCMOD_PATH = os.path.join(THIRD_PARTY_DIR, 'crcmod', 'python2')
|
| +CRCMOD_OSX_PATH = os.path.join(THIRD_PARTY_DIR, 'crcmod_osx')
|
| +
|
| +try:
|
| + # pylint: disable=g-import-not-at-top
|
| + import crcmod
|
| +except ImportError:
|
| + crcmod = None
|
| +
|
| +if not UsingCrcmodExtension(crcmod):
|
| + local_crcmod_path = (CRCMOD_OSX_PATH
|
| + if 'darwin' in str(sys.platform).lower()
|
| + else CRCMOD_PATH)
|
| + sys.path.insert(0, local_crcmod_path)
|
| +
|
| +
|
| +def RunMain():
|
| + # pylint: disable=g-import-not-at-top
|
| + import gslib.__main__
|
| + sys.exit(gslib.__main__.main())
|
| +
|
| +if __name__ == '__main__':
|
| + RunMain()
|
|
|