| Index: third_party/gsutil/gslib/commands/version.py
|
| diff --git a/third_party/gsutil/gslib/commands/version.py b/third_party/gsutil/gslib/commands/version.py
|
| deleted file mode 100644
|
| index a396372a73ea3ce2d58d2bd1c8b41b2d7e1fa94f..0000000000000000000000000000000000000000
|
| --- a/third_party/gsutil/gslib/commands/version.py
|
| +++ /dev/null
|
| @@ -1,150 +0,0 @@
|
| -# Copyright 2011 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.
|
| -
|
| -import boto
|
| -import os
|
| -import re
|
| -import sys
|
| -
|
| -from boto.pyami.config import BotoConfigLocations
|
| -from gslib.command import Command
|
| -from gslib.command import COMMAND_NAME
|
| -from gslib.command import COMMAND_NAME_ALIASES
|
| -from gslib.command import CONFIG_REQUIRED
|
| -from gslib.command import FILE_URIS_OK
|
| -from gslib.command import MAX_ARGS
|
| -from gslib.command import MIN_ARGS
|
| -from gslib.command import PROVIDER_URIS_OK
|
| -from gslib.command import SUPPORTED_SUB_ARGS
|
| -from gslib.command import URIS_START_ARG
|
| -from gslib.help_provider import HELP_NAME
|
| -from gslib.help_provider import HELP_NAME_ALIASES
|
| -from gslib.help_provider import HELP_ONE_LINE_SUMMARY
|
| -from gslib.help_provider import HELP_TEXT
|
| -from gslib.help_provider import HelpType
|
| -from gslib.help_provider import HELP_TYPE
|
| -from hashlib import md5
|
| -
|
| -_detailed_help_text = ("""
|
| -<B>SYNOPSIS</B>
|
| - gsutil version
|
| -
|
| -
|
| -<B>DESCRIPTION</B>
|
| - Prints information about the version of gsutil, boto, and Python being
|
| - run on your system.
|
| -""")
|
| -
|
| -
|
| -class VersionCommand(Command):
|
| - """Implementation of gsutil version command."""
|
| -
|
| - # Command specification (processed by parent class).
|
| - command_spec = {
|
| - # Name of command.
|
| - COMMAND_NAME : 'version',
|
| - # List of command name aliases.
|
| - COMMAND_NAME_ALIASES : ['ver'],
|
| - # Min number of args required by this command.
|
| - MIN_ARGS : 0,
|
| - # Max number of args required by this command, or NO_MAX.
|
| - MAX_ARGS : 0,
|
| - # Getopt-style string specifying acceptable sub args.
|
| - SUPPORTED_SUB_ARGS : '',
|
| - # True if file URIs acceptable for this command.
|
| - FILE_URIS_OK : False,
|
| - # True if provider-only URIs acceptable for this command.
|
| - PROVIDER_URIS_OK : False,
|
| - # Index in args of first URI arg.
|
| - URIS_START_ARG : 0,
|
| - # True if must configure gsutil before running command.
|
| - CONFIG_REQUIRED : False,
|
| - }
|
| - help_spec = {
|
| - # Name of command or auxiliary help info for which this help applies.
|
| - HELP_NAME : 'version',
|
| - # List of help name aliases.
|
| - HELP_NAME_ALIASES : ['ver'],
|
| - # Type of help:
|
| - HELP_TYPE : HelpType.COMMAND_HELP,
|
| - # One line summary of this help.
|
| - HELP_ONE_LINE_SUMMARY : 'Print version info about gsutil',
|
| - # The full help text.
|
| - HELP_TEXT : _detailed_help_text,
|
| - }
|
| -
|
| - # Command entry point.
|
| - def RunCommand(self):
|
| - for path in BotoConfigLocations:
|
| - f = None
|
| - try:
|
| - f = open(path, 'r')
|
| - break
|
| - except IOError:
|
| - pass
|
| - finally:
|
| - if f:
|
| - f.close()
|
| - else:
|
| - path = "no config found"
|
| -
|
| - try:
|
| - f = open(os.path.join(self.gsutil_bin_dir, 'CHECKSUM'))
|
| - shipped_checksum = f.read().strip()
|
| - f.close()
|
| - except IOError:
|
| - shipped_checksum = 'MISSING'
|
| - try:
|
| - cur_checksum = self._ComputeCodeChecksum()
|
| - except IOError:
|
| - cur_checksum = 'MISSING FILES'
|
| - if shipped_checksum == cur_checksum:
|
| - checksum_ok_str = 'OK'
|
| - else:
|
| - checksum_ok_str = '!= %s' % shipped_checksum
|
| - sys.stderr.write(
|
| - 'gsutil version %s\nchecksum %s (%s)\n'
|
| - 'boto version %s\npython version %s\n'
|
| - 'config path: %s\ngsutil path: %s\n' % (
|
| - self.gsutil_ver, cur_checksum, checksum_ok_str,
|
| - boto.__version__, sys.version, path, os.path.realpath(sys.argv[0])))
|
| -
|
| - return 0
|
| -
|
| - def _ComputeCodeChecksum(self):
|
| - """
|
| - Computes a checksum of gsutil code so we can see if users locally modified
|
| - gsutil when requesting support. (It's fine for users to make local mods,
|
| - but when users ask for support we ask them to run a stock version of
|
| - gsutil so we can reduce possible variables.)
|
| - """
|
| - m = md5()
|
| - # Checksum gsutil and all .py files under gsutil bin (including bundled
|
| - # libs). Although we will eventually make gsutil allow use of a centrally
|
| - # installed boto (once boto shifts to more frequent releases), in that case
|
| - # the local copies still should not have any user modifications.
|
| - files_to_checksum = [os.path.join(self.gsutil_bin_dir, 'gsutil')]
|
| - for root, sub_folders, files in os.walk(self.gsutil_bin_dir):
|
| - for file in files:
|
| - if file[-3:] == '.py':
|
| - files_to_checksum.append(os.path.join(root, file))
|
| - # Sort to ensure consistent checksum build, no matter how os.walk
|
| - # orders the list.
|
| - for file in sorted(files_to_checksum):
|
| - f = open(file, 'r')
|
| - content = f.read()
|
| - content = re.sub(r'(\r\n|\r|\n)', '\n', content)
|
| - m.update(content)
|
| - f.close()
|
| - return m.hexdigest()
|
|
|