class Bundler::CLI

def self.source_root

def self.source_root
  File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
end

def self.start(*)

def self.start(*)
  super
rescue Exception => e
  Bundler.ui = UI::Shell.new
  raise e
end

def binstubs(*gems)

def binstubs(*gems)
  require 'bundler/cli/binstubs'
  Binstubs.new(options, gems).run
end

def cache

def cache
  require 'bundler/cli/cache'
  Cache.new(options).run
end

def check

def check
  require 'bundler/cli/check'
  Check.new(options).run
end

def clean

def clean
  require 'bundler/cli/clean'
  Clean.new(options.dup).run
end

def config(*args)

def config(*args)
  require 'bundler/cli/config'
  Config.new(options, args, self).run
end

def console(group = nil)

def console(group = nil)
  require 'bundler/cli/console'
  Console.new(options, group, CONSOLES).run
end

def env

def env
  Env.new.write($stdout)
end

def exec(*args)

def exec(*args)
  require 'bundler/cli/exec'
  Exec.new(options, args).run
end

def gem(name)

def gem(name)
  require 'bundler/cli/gem'
  Gem.new(options, name, self).run
end

def help(cli = nil)

def help(cli = nil)
  case cli
  when "gemfile" then command = "gemfile.5"
  when nil       then command = "bundle"
  else command = "bundle-#{cli}"
  end
  manpages = %w(
      bundle
      bundle-config
      bundle-exec
      bundle-install
      bundle-package
      bundle-update
      bundle-platform
      gemfile.5)
  if manpages.include?(command)
    root = File.expand_path("../man", __FILE__)
    if Bundler.which("man") && root !~ %r{^file:/.+!/META-INF/jruby.home/.+}
      Kernel.exec "man #{root}/#{command}"
    else
      puts File.read("#{root}/#{command}.txt")
    end
  else
    super
  end
end

def init

def init
  require 'bundler/cli/init'
  Init.new(options.dup).run
end

def initialize(*)

def initialize(*)
  super
  ENV['BUNDLE_GEMFILE']   = File.expand_path(options[:gemfile]) if options[:gemfile]
  Bundler::Retry.attempts = options[:retry] || Bundler.settings[:retry] || Bundler::Retry::DEFAULT_ATTEMPTS
  Bundler.rubygems.ui = UI::RGProxy.new(Bundler.ui)
rescue UnknownArgumentError => e
  raise InvalidOption, e.message
ensure
  self.options ||= {}
  Bundler.ui = UI::Shell.new(options)
  Bundler.ui.level = "debug" if options["verbose"]
end

def inject(name, version, *gems)

def inject(name, version, *gems)
  require 'bundler/cli/inject'
  Inject.new(options, name, version, gems).run
end

def install

def install
  require 'bundler/cli/install'
  Install.new(options.dup).run
end

def licenses

def licenses
  Bundler.load.specs.sort_by { |s| s.license.to_s }.reverse.each do |s|
    gem_name = s.name
    license  = s.license || s.licenses
    if license.empty?
      Bundler.ui.warn "#{gem_name}: Unknown"
    else
      Bundler.ui.info "#{gem_name}: #{license}"
    end
  end
end

def open(name)

def open(name)
  require 'bundler/cli/open'
  Open.new(options, name).run
end

def outdated(*gems)

def outdated(*gems)
  require 'bundler/cli/outdated'
  Outdated.new(options, gems).run
end

def package

def package
  require 'bundler/cli/package'
  Package.new(options).run
end

def platform

def platform
  require 'bundler/cli/platform'
  Platform.new(options).run
end

def show(gem_name = nil)

def show(gem_name = nil)
  require 'bundler/cli/show'
  Show.new(options, gem_name).run
end

def update(*gems)

def update(*gems)
  require 'bundler/cli/update'
  Update.new(options, gems).run
end

def version

def version
  Bundler.ui.info "Bundler version #{Bundler::VERSION}"
end

def viz

def viz
  require 'bundler/cli/viz'
  Viz.new(options).run
end