class Bundler::CLI

Constants

AUTO_INSTALL_CMDS

Public Class Methods

handle_no_command_error(command, has_namespace = $thor_runner) click to toggle source
Calls superclass method
# File lib/bundler/cli.rb, line 84
def self.handle_no_command_error(command, has_namespace = $thor_runner)
  return super unless command_path = Bundler.which("bundler-#{command}")

  Kernel.exec(command_path, *ARGV[1..-1])
end
new(*args) click to toggle source
Calls superclass method Bundler::Thor::Actions.new
# File lib/bundler/cli.rb, line 17
def initialize(*args)
  super

  custom_gemfile = options[:gemfile] || Bundler.settings[:gemfile]
  ENV["BUNDLE_GEMFILE"] = File.expand_path(custom_gemfile) if custom_gemfile && !custom_gemfile.empty?

  Bundler.settings[:retry] = options[:retry] if options[:retry]

  current_cmd = args.last[:current_command].name
  auto_install if AUTO_INSTALL_CMDS.include?(current_cmd)
rescue UnknownArgumentError => e
  raise InvalidOption, e.message
ensure
  self.options ||= {}
  Bundler.ui = UI::Shell.new(options)
  Bundler.ui.level = "debug" if options["verbose"]

  if ENV["RUBYGEMS_GEMDEPS"] && !ENV["RUBYGEMS_GEMDEPS"].empty?
    Bundler.ui.warn(
      "The RUBYGEMS_GEMDEPS environment variable is set. This enables RubyGems' "            "experimental Gemfile mode, which may conflict with Bundler and cause unexpected errors. "            "To remove this warning, unset RUBYGEMS_GEMDEPS.", :wrap => true)
  end
end
reformatted_help_args(args) click to toggle source

Reformat the arguments passed to bundle that include a –help flag into the corresponding `bundle help #{command}` call

# File lib/bundler/cli.rb, line 438
def self.reformatted_help_args(args)
  bundler_commands = all_commands.keys
  help_flags = %w(--help -h)
  exec_commands = %w(e ex exe exec)
  help_used = args.index {|a| help_flags.include? a }
  exec_used = args.index {|a| exec_commands.include? a }
  command = args.find {|a| bundler_commands.include? a }
  if exec_used && help_used
    if exec_used + help_used == 1
      %w(help exec)
    else
      args
    end
  elsif command.nil?
    abort("Could not find command \"#{args.join(" ")}\".")
  else
    ["help", command || args].flatten.compact
  end
end
source_root() click to toggle source
# File lib/bundler/cli.rb, line 387
def self.source_root
  File.expand_path(File.join(File.dirname(__FILE__), "templates"))
end
start(*) click to toggle source
Calls superclass method
# File lib/bundler/cli.rb, line 10
def self.start(*)
  super
rescue Exception => e
  Bundler.ui = UI::Shell.new
  raise e
end

Public Instance Methods

binstubs(*gems) click to toggle source
# File lib/bundler/cli.rb, line 232
def binstubs(*gems)
  require "bundler/cli/binstubs"
  Binstubs.new(options, gems).run
end
cache() click to toggle source
# File lib/bundler/cli.rb, line 264
def cache
  require "bundler/cli/cache"
  Cache.new(options).run
end
check() click to toggle source
# File lib/bundler/cli.rb, line 115
def check
  require "bundler/cli/check"
  Check.new(options).run
end
clean() click to toggle source
# File lib/bundler/cli.rb, line 396
def clean
  require "bundler/cli/clean"
  Clean.new(options.dup).run
end
config(*args) click to toggle source
# File lib/bundler/cli.rb, line 319
def config(*args)
  require "bundler/cli/config"
  Config.new(options, args, self).run
end
console(group = nil) click to toggle source
# File lib/bundler/cli.rb, line 331
def console(group = nil)
  require "bundler/cli/console"
  Console.new(options, group).run
end
env() click to toggle source
# File lib/bundler/cli.rb, line 432
def env
  Env.new.write($stdout)
end
exec(*args) click to toggle source
# File lib/bundler/cli.rb, line 302
def exec(*args)
  require "bundler/cli/exec"
  Exec.new(options, args).run
end
gem(name) click to toggle source
# File lib/bundler/cli.rb, line 382
def gem(name)
  require "bundler/cli/gem"
  Gem.new(options, name, self).run
end
help(cli = nil) click to toggle source
Calls superclass method
# File lib/bundler/cli.rb, line 51
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-gem
    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
  elsif command_path = Bundler.which("bundler-#{cli}")
    Kernel.exec(command_path, "--help")
  else
    super
  end
end
init() click to toggle source
# File lib/bundler/cli.rb, line 97
def init
  require "bundler/cli/init"
  Init.new(options.dup).run
end
inject(name, version, *gems) click to toggle source
# File lib/bundler/cli.rb, line 410
def inject(name, version, *gems)
  require "bundler/cli/inject"
  Inject.new(options, name, version, gems).run
end
install() click to toggle source
# File lib/bundler/cli.rb, line 171
def install
  require "bundler/cli/install"
  no_install = Bundler.settings[:no_install]
  Bundler.settings[:no_install] = false if no_install == true
  Install.new(options.dup).run
ensure
  Bundler.settings[:no_install] = no_install unless no_install.nil?
end
licenses() click to toggle source
# File lib/bundler/cli.rb, line 343
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
lock() click to toggle source
# File lib/bundler/cli.rb, line 426
def lock
  require "bundler/cli/lock"
  Lock.new(options).run
end
open(name) click to toggle source
# File lib/bundler/cli.rb, line 325
def open(name)
  require "bundler/cli/open"
  Open.new(options, name).run
end
outdated(*gems) click to toggle source
# File lib/bundler/cli.rb, line 255
def outdated(*gems)
  require "bundler/cli/outdated"
  Outdated.new(options, gems).run
end
package() click to toggle source
# File lib/bundler/cli.rb, line 288
def package
  require "bundler/cli/package"
  Package.new(options).run
end
platform() click to toggle source
# File lib/bundler/cli.rb, line 404
def platform
  require "bundler/cli/platform"
  Platform.new(options).run
end
show(gem_name = nil) click to toggle source
# File lib/bundler/cli.rb, line 216
def show(gem_name = nil)
  require "bundler/cli/show"
  Show.new(options, gem_name).run
end
update(*gems) click to toggle source
# File lib/bundler/cli.rb, line 202
def update(*gems)
  require "bundler/cli/update"
  Update.new(options, gems).run
end
version() click to toggle source
# File lib/bundler/cli.rb, line 337
def version
  Bundler.ui.info "Bundler version #{Bundler::VERSION}"
end
viz() click to toggle source
# File lib/bundler/cli.rb, line 367
def viz
  require "bundler/cli/viz"
  Viz.new(options).run
end

Private Instance Methods

auto_install() click to toggle source

Automatically invoke `bundle install` and resume if Bundler.settings exists. This is set through config cmd `bundle config #auto_install 1`.

Note that this method `nil`s out the global Definition object, so it should be called first, before you instantiate anything like an `Installer` that'll keep a reference to the old one instead.

# File lib/bundler/cli.rb, line 467
def auto_install
  return unless Bundler.settings[:auto_install]

  begin
    Bundler.definition.specs
  rescue GemNotFound
    Bundler.ui.info "Automatically installing missing gems."
    Bundler.reset!
    invoke :install, []
    Bundler.reset!
  end
end