Class: Bundler::CLI
Defined Under Namespace
Modules: Common
Classes: Add, Binstubs, Cache, Check, Clean, Config, Console, Doctor, Exec, Gem, Info, Init, Inject, Install, Issue, List, Lock, Open, Outdated, Package, Platform, Plugin, Pristine, Remove, Show, Update, Viz
Constant Summary
collapse
- AUTO_INSTALL_CMDS =
%w[show binstubs outdated exec open console licenses clean].freeze
- PARSEABLE_COMMANDS =
%w[
check config help exec platform show version
].freeze
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
#behavior
Attributes included from Thor::Base
#args, #options, #parent_options
Class Method Summary
collapse
Instance Method Summary
collapse
#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, #inject_into_module, #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, disable_required_check!, disable_required_check?, 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.
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/bundler/cli.rb', line 33
def initialize(*args)
super
custom_gemfile = options[:gemfile] || Bundler.settings[:gemfile]
if custom_gemfile && !custom_gemfile.empty?
Bundler::SharedHelpers.set_env "BUNDLE_GEMFILE", File.expand_path(custom_gemfile)
Bundler.reset_paths!
end
Bundler.settings.set_command_option_if_given :retry, 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 ||= {}
unprinted_warnings = Bundler.ui.unprinted_warnings
Bundler.ui = UI::Shell.new(options)
Bundler.ui.level = "debug" if options["verbose"]
unprinted_warnings.each {|w| Bundler.ui.warn(w) }
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
|
Class Method Details
.deprecated_option(*args, &blk) ⇒ Object
64
65
66
67
|
# File 'lib/bundler/cli.rb', line 64
def self.deprecated_option(*args, &blk)
return if Bundler.feature_flag.forget_cli_options?
method_option(*args, &blk)
end
|
.dispatch ⇒ Object
26
27
28
29
30
31
|
# File 'lib/bundler/cli.rb', line 26
def self.dispatch(*)
super do |i|
i.send(:print_command)
i.send(:warn_on_outdated_bundler)
end
end
|
.handle_no_command_error(command, has_namespace = $thor_runner) ⇒ Object
129
130
131
132
133
134
135
136
137
|
# File 'lib/bundler/cli.rb', line 129
def self.handle_no_command_error(command, has_namespace = $thor_runner)
if Bundler.feature_flag.plugins? && Bundler::Plugin.command?(command)
return Bundler::Plugin.exec_command(command, ARGV[1..-1])
end
return super unless command_path = Bundler.which("bundler-#{command}")
Kernel.exec(command_path, *ARGV[1..-1])
end
|
Reformat the arguments passed to bundle that include a –help flag into the corresponding ‘bundle help #command` call
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
|
# File 'lib/bundler/cli.rb', line 691
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 help_used
args = args.dup
args.delete_at(help_used)
["help", command || args].flatten.compact
else
args
end
end
|
.source_root ⇒ Object
583
584
585
|
# File 'lib/bundler/cli.rb', line 583
def self.source_root
File.expand_path(File.join(File.dirname(__FILE__), "templates"))
end
|
.start ⇒ Object
17
18
19
20
21
22
23
24
|
# File 'lib/bundler/cli.rb', line 17
def self.start(*)
super
rescue Exception => e
Bundler.ui = UI::Shell.new
raise e
ensure
Bundler::SharedHelpers.print_major_deprecations!
end
|
Instance Method Details
#add(*gems) ⇒ Object
368
369
370
371
|
# File 'lib/bundler/cli.rb', line 368
def add(*gems)
require "bundler/cli/add"
Add.new(options.dup, gems).run
end
|
#binstubs(*gems) ⇒ Object
352
353
354
355
|
# File 'lib/bundler/cli.rb', line 352
def binstubs(*gems)
require "bundler/cli/binstubs"
Binstubs.new(options, gems).run
end
|
#cache ⇒ Object
418
419
420
421
|
# File 'lib/bundler/cli.rb', line 418
def cache
require "bundler/cli/cache"
Cache.new(options).run
end
|
#check ⇒ Object
164
165
166
167
|
# File 'lib/bundler/cli.rb', line 164
def check
require "bundler/cli/check"
Check.new(options).run
end
|
#clean ⇒ Object
592
593
594
595
|
# File 'lib/bundler/cli.rb', line 592
def clean
require "bundler/cli/clean"
Clean.new(options.dup).run
end
|
#cli_help ⇒ Object
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/bundler/cli.rb', line 73
def cli_help
version
Bundler.ui.info "\n"
primary_commands = ["install", "update",
Bundler.feature_flag.cache_command_is_package? ? "cache" : "package",
"exec", "config", "help"]
list = self.class.printable_commands(true)
by_name = list.group_by {|name, _message| name.match(/^bundle (\w+)/)[1] }
utilities = by_name.keys.sort - primary_commands
primary_commands.map! {|name| (by_name[name] || raise("no primary command #{name}")).first }
utilities.map! {|name| by_name[name].first }
shell.say "Bundler commands:\n\n"
shell.say " Primary commands:\n"
shell.print_table(primary_commands, :indent => 4, :truncate => true)
shell.say
shell.say " Utilities:\n"
shell.print_table(utilities, :indent => 4, :truncate => true)
shell.say
self.class.send(:class_options_help, shell)
end
|
#config(*args) ⇒ Object
479
480
481
482
|
# File 'lib/bundler/cli.rb', line 479
def config(*args)
require "bundler/cli/config"
Config.new(options, args, self).run
end
|
#console(group = nil) ⇒ Object
492
493
494
495
|
# File 'lib/bundler/cli.rb', line 492
def console(group = nil)
require "bundler/cli/console"
Console.new(options, group).run
end
|
#doctor ⇒ Object
661
662
663
664
|
# File 'lib/bundler/cli.rb', line 661
def doctor
require "bundler/cli/doctor"
Doctor.new(options).run
end
|
#env ⇒ Object
647
648
649
|
# File 'lib/bundler/cli.rb', line 647
def env
Env.write($stdout)
end
|
#exec(*args) ⇒ Object
461
462
463
464
|
# File 'lib/bundler/cli.rb', line 461
def exec(*args)
require "bundler/cli/exec"
Exec.new(options, args).run
end
|
#help(cli = nil) ⇒ Object
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
# File 'lib/bundler/cli.rb', line 104
def help(cli = nil)
case cli
when "gemfile" then command = "gemfile"
when nil then command = "bundle"
else command = "bundle-#{cli}"
end
man_path = File.expand_path("../../../man", __FILE__)
man_pages = Hash[Dir.glob(File.join(man_path, "*")).grep(/.*\.\d*\Z/).collect do |f|
[File.basename(f, ".*"), f]
end]
if man_pages.include?(command)
if Bundler.which("man") && man_path !~ %r{^file:/.+!/META-INF/jruby.home/.+}
Kernel.exec "man #{man_pages[command]}"
else
puts File.read("#{man_path}/#{File.basename(man_pages[command])}.txt")
end
elsif command_path = Bundler.which("bundler-#{cli}")
Kernel.exec(command_path, "--help")
else
super
end
end
|
#info(gem_name) ⇒ Object
331
332
333
334
|
# File 'lib/bundler/cli.rb', line 331
def info(gem_name)
require "bundler/cli/info"
Info.new(options, gem_name).run
end
|
#init ⇒ Object
146
147
148
149
|
# File 'lib/bundler/cli.rb', line 146
def init
require "bundler/cli/init"
Init.new(options.dup).run
end
|
#inject(name, version) ⇒ Object
610
611
612
613
614
|
# File 'lib/bundler/cli.rb', line 610
def inject(name, version)
SharedHelpers.major_deprecation 2, "The `inject` command has been replaced by the `add` command"
require "bundler/cli/inject"
Inject.new(options.dup, name, version).run
end
|
#install ⇒ Object
231
232
233
234
235
236
237
|
# File 'lib/bundler/cli.rb', line 231
def install
SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
require "bundler/cli/install"
Bundler.settings.temporary(:no_install => false) do
Install.new(options.dup).run
end
end
|
#issue ⇒ Object
667
668
669
670
|
# File 'lib/bundler/cli.rb', line 667
def issue
require "bundler/cli/issue"
Issue.new.run
end
|
#licenses ⇒ Object
514
515
516
517
518
519
520
521
522
523
524
525
|
# File 'lib/bundler/cli.rb', line 514
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
|
#list ⇒ Object
319
320
321
322
|
# File 'lib/bundler/cli.rb', line 319
def list
require "bundler/cli/list"
List.new(options).run
end
|
#lock ⇒ Object
641
642
643
644
|
# File 'lib/bundler/cli.rb', line 641
def lock
require "bundler/cli/lock"
Lock.new(options).run
end
|
#open(name) ⇒ Object
485
486
487
488
|
# File 'lib/bundler/cli.rb', line 485
def open(name)
require "bundler/cli/open"
Open.new(options, name).run
end
|
#outdated(*gems) ⇒ Object
403
404
405
406
|
# File 'lib/bundler/cli.rb', line 403
def outdated(*gems)
require "bundler/cli/outdated"
Outdated.new(options, gems).run
end
|
#package ⇒ Object
446
447
448
449
|
# File 'lib/bundler/cli.rb', line 446
def package
require "bundler/cli/package"
Package.new(options).run
end
|
600
601
602
603
|
# File 'lib/bundler/cli.rb', line 600
def platform
require "bundler/cli/platform"
Platform.new(options).run
end
|
#pristine(*gems) ⇒ Object
678
679
680
681
|
# File 'lib/bundler/cli.rb', line 678
def pristine(*gems)
require "bundler/cli/pristine"
Pristine.new(gems).run
end
|
#remove(*gems) ⇒ Object
175
176
177
178
|
# File 'lib/bundler/cli.rb', line 175
def remove(*gems)
require "bundler/cli/remove"
Remove.new(gems, options).run
end
|
#show(gem_name = nil) ⇒ Object
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
|
# File 'lib/bundler/cli.rb', line 292
def show(gem_name = nil)
if ARGV[0] == "show"
rest = ARGV[1..-1]
new_command = rest.find {|arg| !arg.start_with?("--") } ? "info" : "list"
new_arguments = rest.map do |arg|
next arg if arg != "--paths"
next "--path" if new_command == "info"
end
old_argv = ARGV.join(" ")
new_argv = [new_command, *new_arguments.compact].join(" ")
Bundler::SharedHelpers.major_deprecation(2, "use `bundle #{new_argv}` instead of `bundle #{old_argv}`")
end
require "bundler/cli/show"
Show.new(options, gem_name).run
end
|
#update(*gems) ⇒ Object
277
278
279
280
281
|
# File 'lib/bundler/cli.rb', line 277
def update(*gems)
SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
require "bundler/cli/update"
Update.new(options, gems).run
end
|
#version ⇒ Object
499
500
501
502
503
504
505
506
507
508
509
510
|
# File 'lib/bundler/cli.rb', line 499
def version
cli_help = current_command.name == "cli_help"
if cli_help || ARGV.include?("version")
build_info = " (#{BuildMetadata.built_at} commit #{BuildMetadata.git_commit_sha})"
end
if !cli_help && Bundler.feature_flag.print_only_version_number?
Bundler.ui.info "#{Bundler::VERSION}#{build_info}"
else
Bundler.ui.info "Bundler version #{Bundler::VERSION}#{build_info}"
end
end
|
#viz ⇒ Object
539
540
541
542
543
|
# File 'lib/bundler/cli.rb', line 539
def viz
SharedHelpers.major_deprecation 2, "The `viz` command has been moved to the `bundle-viz` gem, see https://github.com/bundler/bundler-viz"
require "bundler/cli/viz"
Viz.new(options.dup).run
end
|