class Bundler::Env

def self.report(options = {})

def self.report(options = {})
  print_gemfile = options.delete(:print_gemfile) { true }
  print_gemspecs = options.delete(:print_gemspecs) { true }
  out = String.new
  append_formatted_table("Environment", environment, out)
  append_formatted_table("Bundler Build Metadata", BuildMetadata.to_h, out)
  unless Bundler.settings.all.empty?
    out << "\n## Bundler settings\n\n```\n"
    Bundler.settings.all.each do |setting|
      out << setting << "\n"
      Bundler.settings.pretty_values_for(setting).each do |line|
        out << "  " << line << "\n"
      end
    end
    out << "```\n"
  end
  return out unless SharedHelpers.in_bundle?
  if print_gemfile
    gemfiles = [Bundler.default_gemfile]
    begin
      gemfiles = Bundler.definition.gemfiles
    rescue GemfileNotFound
      nil
    end
    out << "\n## Gemfile\n"
    gemfiles.each do |gemfile|
      out << "\n### #{Pathname.new(gemfile).relative_path_from(SharedHelpers.pwd)}\n\n"
      out << "```ruby\n" << read_file(gemfile).chomp << "\n```\n"
    end
    out << "\n### #{Bundler.default_lockfile.relative_path_from(SharedHelpers.pwd)}\n\n"
    out << "```\n" << read_file(Bundler.default_lockfile).chomp << "\n```\n"
  end
  if print_gemspecs
    dsl = Dsl.new.tap {|d| d.eval_gemfile(Bundler.default_gemfile) }
    out << "\n## Gemspecs\n" unless dsl.gemspecs.empty?
    dsl.gemspecs.each do |gs|
      out << "\n### #{File.basename(gs.loaded_from)}"
      out << "\n\n```ruby\n" << read_file(gs.loaded_from).chomp << "\n```\n"
    end
  end
  out
end