Class: Bundler::CLI

Inherits:
Thor
  • Object
show all
Includes:
Thor::Actions
Defined in:
lib/bundler/cli.rb

Defined Under Namespace

Modules: Common Classes: Binstubs, Cache, Check, Clean, Config, Console, Exec, Gem, Init, Inject, Install, Lock, Open, Outdated, Package, Platform, Show, Update, Viz

Constant Summary collapse

AUTO_INSTALL_CMDS =
%w[show binstubs outdated exec open console licenses clean]

Constants inherited from Thor

Thor::AmbiguousTaskError, Thor::DynamicTask, Thor::HELP_MAPPINGS, Thor::HiddenTask, Thor::TEMPLATE_EXTNAME, Thor::THOR_RESERVED_WORDS, Thor::Task, Thor::UndefinedTaskError, Thor::VERSION

Instance Attribute Summary

Attributes included from Thor::Actions

#behavior

Attributes included from Thor::Base

#args, #options, #parent_options

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Thor::Actions

#action, #append_to_file, #apply, #chmod, #comment_lines, #copy_file, #create_file, #create_link, #destination_root, #destination_root=, #directory, #empty_directory, #find_in_source_paths, #get, #gsub_file, #in_root, included, #inject_into_class, #insert_into_file, #inside, #link_file, #prepend_to_file, #relative_to_original_destination_root, #remove_file, #run, #run_ruby_script, #source_paths, #template, #thor, #uncomment_lines

Methods inherited from Thor

check_unknown_options!, check_unknown_options?, command_help, default_command, desc, help, long_desc, map, method_option, method_options, package_name, printable_commands, register, stop_on_unknown_option!, stop_on_unknown_option?, subcommand, subcommand_classes, subcommands

Methods included from Thor::Base

included, register_klass_file, subclass_files, subclasses

Constructor Details

#initialize(*args) ⇒ CLI

Returns a new instance of CLI.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/bundler/cli.rb', line 16

def initialize(*args)
  super

  custom_gemfile = options[:gemfile] || Bundler.settings[:gemfile]
  ENV['BUNDLE_GEMFILE']   = File.expand_path(custom_gemfile) if custom_gemfile

  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"]
end

Class Method Details

.handle_no_command_error(command, has_namespace = $thor_runner) ⇒ Object



73
74
75
76
77
# File 'lib/bundler/cli.rb', line 73

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

.source_rootObject



362
363
364
# File 'lib/bundler/cli.rb', line 362

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

.startObject



9
10
11
12
13
14
# File 'lib/bundler/cli.rb', line 9

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

Instance Method Details

#binstubs(*gems) ⇒ Object



214
215
216
217
# File 'lib/bundler/cli.rb', line 214

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

#cacheObject



241
242
243
244
# File 'lib/bundler/cli.rb', line 241

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

#checkObject



104
105
106
107
# File 'lib/bundler/cli.rb', line 104

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

#cleanObject



371
372
373
374
# File 'lib/bundler/cli.rb', line 371

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

#config(*args) ⇒ Object



294
295
296
297
# File 'lib/bundler/cli.rb', line 294

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

#console(group = nil) ⇒ Object



306
307
308
309
# File 'lib/bundler/cli.rb', line 306

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

#envObject



405
406
407
# File 'lib/bundler/cli.rb', line 405

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

#exec(*args) ⇒ Object



277
278
279
280
# File 'lib/bundler/cli.rb', line 277

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

#gem(name) ⇒ Object



357
358
359
360
# File 'lib/bundler/cli.rb', line 357

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

#help(cli = nil) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/bundler/cli.rb', line 43

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

#initObject



86
87
88
89
# File 'lib/bundler/cli.rb', line 86

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

#inject(name, version, *gems) ⇒ Object



385
386
387
388
# File 'lib/bundler/cli.rb', line 385

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

#installObject



160
161
162
163
# File 'lib/bundler/cli.rb', line 160

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

#licensesObject



318
319
320
321
322
323
324
325
326
327
328
329
# File 'lib/bundler/cli.rb', line 318

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

#lockObject



399
400
401
402
# File 'lib/bundler/cli.rb', line 399

def lock
  require 'bundler/cli/lock'
  Lock.new(options).run
end

#open(name) ⇒ Object



300
301
302
303
# File 'lib/bundler/cli.rb', line 300

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

#outdated(*gems) ⇒ Object



232
233
234
235
# File 'lib/bundler/cli.rb', line 232

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

#packageObject



263
264
265
266
# File 'lib/bundler/cli.rb', line 263

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

#platformObject



379
380
381
382
# File 'lib/bundler/cli.rb', line 379

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

#show(gem_name = nil) ⇒ Object



199
200
201
202
# File 'lib/bundler/cli.rb', line 199

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

#update(*gems) ⇒ Object



185
186
187
188
# File 'lib/bundler/cli.rb', line 185

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

#versionObject



312
313
314
# File 'lib/bundler/cli.rb', line 312

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

#vizObject



342
343
344
345
# File 'lib/bundler/cli.rb', line 342

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