class Bundler::Env

def self.environment

def self.environment
  out = []
  out << ["Bundler", Bundler::VERSION]
  out << ["  Platforms", Gem.platforms.join(", ")]
  out << ["Ruby", ruby_version]
  out << ["  Full Path", Gem.ruby]
  out << ["  Config Dir", Pathname.new(Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE).dirname]
  out << ["RubyGems", Gem::VERSION]
  out << ["  Gem Home", Gem.dir]
  out << ["  Gem Path", Gem.path.join(File::PATH_SEPARATOR)]
  out << ["  User Home", Gem.user_home]
  out << ["  User Path", Gem.user_dir]
  out << ["  Bin Dir", Gem.bindir]
  if defined?(OpenSSL::SSL)
    out << ["OpenSSL"]
    out << ["  Compiled", OpenSSL::OPENSSL_VERSION] if defined?(OpenSSL::OPENSSL_VERSION)
    out << ["  Loaded", OpenSSL::OPENSSL_LIBRARY_VERSION] if defined?(OpenSSL::OPENSSL_LIBRARY_VERSION)
    out << ["  Cert File", OpenSSL::X509::DEFAULT_CERT_FILE] if defined?(OpenSSL::X509::DEFAULT_CERT_FILE)
    out << ["  Cert Dir", OpenSSL::X509::DEFAULT_CERT_DIR] if defined?(OpenSSL::X509::DEFAULT_CERT_DIR)
  end
  out << ["Tools"]
  out << ["  Git", git_version]
  out << ["  RVM", ENV.fetch("rvm_version") { version_of("rvm") }]
  out << ["  rbenv", version_of("rbenv")]
  out << ["  chruby", chruby_version]
  %w[rubygems-bundler open_gem].each do |name|
    specs = Bundler.rubygems.find_name(name)
    out << ["  #{name}", "(#{specs.map(&:version).join(",")})"] unless specs.empty?
  end
  if (exe = caller.last.split(":").first) && exe =~ %r{(exe|bin)/bundler?\z}
    shebang = File.read(exe).lines.first
    shebang.sub!(/^#!\s*/, "")
    unless shebang.start_with?(Gem.ruby, "/usr/bin/env ruby")
      out << ["Gem.ruby", Gem.ruby]
      out << ["bundle #!", shebang]
    end
  end
  out
end