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, 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
- COMMAND_ALIASES =
{
"check" => "c",
"install" => "i",
"list" => "ls",
"exec" => ["e", "ex", "exe"],
"cache" => ["package", "pack"],
"version" => ["-v", "--version"],
}.freeze
Thor::Actions::WARNINGS
Constants inherited
from Thor
Thor::AmbiguousTaskError, Thor::Correctable, 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, deprecation_warning, 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.
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/bundler/cli.rb', line 54
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
.aliases_for(command_name) ⇒ Object
50
51
52
|
# File 'lib/bundler/cli.rb', line 50
def self.aliases_for(command_name)
COMMAND_ALIASES.select {|k, _| k == command_name }.invert
end
|
.all_aliases ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/bundler/cli.rb', line 36
def self.all_aliases
@all_aliases ||= begin
command_aliases = {}
COMMAND_ALIASES.each do |name, aliases|
Array(aliases).each do |one_alias|
command_aliases[one_alias] = name
end
end
command_aliases
end
end
|
.dispatch ⇒ Object
29
30
31
32
33
34
|
# File 'lib/bundler/cli.rb', line 29
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
143
144
145
146
147
148
149
150
151
|
# File 'lib/bundler/cli.rb', line 143
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
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
|
# File 'lib/bundler/cli.rb', line 708
def self.reformatted_help_args(args)
bundler_commands = (COMMAND_ALIASES.keys + COMMAND_ALIASES.values).flatten
help_flags = %w[--help -h]
exec_commands = ["exec"] + COMMAND_ALIASES["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 }
command = all_aliases[command] if all_aliases[command]
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
598
599
600
|
# File 'lib/bundler/cli.rb', line 598
def self.source_root
File.expand_path(File.join(File.dirname(__FILE__), "templates"))
end
|
Instance Method Details
#add(*gems) ⇒ Object
396
397
398
399
|
# File 'lib/bundler/cli.rb', line 396
def add(*gems)
require_relative "cli/add"
Add.new(options.dup, gems).run
end
|
#binstubs(*gems) ⇒ Object
378
379
380
381
|
# File 'lib/bundler/cli.rb', line 378
def binstubs(*gems)
require_relative "cli/binstubs"
Binstubs.new(options, gems).run
end
|
#cache ⇒ Object
459
460
461
462
|
# File 'lib/bundler/cli.rb', line 459
def cache
require_relative "cli/cache"
Cache.new(options).run
end
|
#check ⇒ Object
177
178
179
180
181
182
|
# File 'lib/bundler/cli.rb', line 177
def check
remembered_flag_deprecation("path")
require_relative "cli/check"
Check.new(options).run
end
|
#clean ⇒ Object
607
608
609
610
|
# File 'lib/bundler/cli.rb', line 607
def clean
require_relative "cli/clean"
Clean.new(options.dup).run
end
|
#cli_help ⇒ Object
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/bundler/cli.rb', line 89
def cli_help
version
Bundler.ui.info "\n"
primary_commands = ["install", "update", "cache", "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
|
#console(group = nil) ⇒ Object
504
505
506
507
|
# File 'lib/bundler/cli.rb', line 504
def console(group = nil)
require_relative "cli/console"
Console.new(options, group).run
end
|
#doctor ⇒ Object
678
679
680
681
|
# File 'lib/bundler/cli.rb', line 678
def doctor
require_relative "cli/doctor"
Doctor.new(options).run
end
|
#env ⇒ Object
664
665
666
|
# File 'lib/bundler/cli.rb', line 664
def env
Env.write($stdout)
end
|
#exec(*args) ⇒ Object
474
475
476
477
|
# File 'lib/bundler/cli.rb', line 474
def exec(*args)
require_relative "cli/exec"
Exec.new(options, args).run
end
|
#help(cli = nil) ⇒ Object
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
# File 'lib/bundler/cli.rb', line 118
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
357
358
359
360
|
# File 'lib/bundler/cli.rb', line 357
def info(gem_name)
require_relative "cli/info"
Info.new(options, gem_name).run
end
|
#init ⇒ Object
160
161
162
163
|
# File 'lib/bundler/cli.rb', line 160
def init
require_relative "cli/init"
Init.new(options.dup).run
end
|
#inject(name, version) ⇒ Object
625
626
627
628
629
|
# File 'lib/bundler/cli.rb', line 625
def inject(name, version)
SharedHelpers.major_deprecation 2, "The `inject` command has been replaced by the `add` command"
require_relative "cli/inject"
Inject.new(options.dup, name, version).run
end
|
#install ⇒ Object
247
248
249
250
251
252
253
254
255
256
257
258
|
# File 'lib/bundler/cli.rb', line 247
def install
SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
%w[clean deployment frozen no-cache no-prune path shebang system without with].each do |option|
remembered_flag_deprecation(option)
end
require_relative "cli/install"
Bundler.settings.temporary(:no_install => false) do
Install.new(options.dup).run
end
end
|
#issue ⇒ Object
684
685
686
687
|
# File 'lib/bundler/cli.rb', line 684
def issue
require_relative "cli/issue"
Issue.new.run
end
|
#licenses ⇒ Object
527
528
529
530
531
532
533
534
535
536
537
538
|
# File 'lib/bundler/cli.rb', line 527
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
348
349
350
351
|
# File 'lib/bundler/cli.rb', line 348
def list
require_relative "cli/list"
List.new(options).run
end
|
#lock ⇒ Object
658
659
660
661
|
# File 'lib/bundler/cli.rb', line 658
def lock
require_relative "cli/lock"
Lock.new(options).run
end
|
#open(name) ⇒ Object
497
498
499
500
|
# File 'lib/bundler/cli.rb', line 497
def open(name)
require_relative "cli/open"
Open.new(options, name).run
end
|
#outdated(*gems) ⇒ Object
432
433
434
435
|
# File 'lib/bundler/cli.rb', line 432
def outdated(*gems)
require_relative "cli/outdated"
Outdated.new(options, gems).run
end
|
615
616
617
618
|
# File 'lib/bundler/cli.rb', line 615
def platform
require_relative "cli/platform"
Platform.new(options).run
end
|
#pristine(*gems) ⇒ Object
695
696
697
698
|
# File 'lib/bundler/cli.rb', line 695
def pristine(*gems)
require_relative "cli/pristine"
Pristine.new(gems).run
end
|
#remove(*gems) ⇒ Object
192
193
194
195
|
# File 'lib/bundler/cli.rb', line 192
def remove(*gems)
require_relative "cli/remove"
Remove.new(gems, options).run
end
|
#show(gem_name = nil) ⇒ Object
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
|
# File 'lib/bundler/cli.rb', line 318
def show(gem_name = nil)
if ARGV[0] == "show"
rest = ARGV[1..-1]
if flag = rest.find{|arg| ["--verbose", "--outdated"].include?(arg) }
Bundler::SharedHelpers.major_deprecation(2, "the `#{flag}` flag to `bundle show` was undocumented and will be removed without replacement")
else
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
end
require_relative "cli/show"
Show.new(options, gem_name).run
end
|
#update(*gems) ⇒ Object
300
301
302
303
304
305
306
|
# File 'lib/bundler/cli.rb', line 300
def update(*gems)
SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
require_relative "cli/update"
Bundler.settings.temporary(:no_install => false) do
Update.new(options, gems).run
end
end
|
#viz ⇒ Object
552
553
554
555
556
|
# File 'lib/bundler/cli.rb', line 552
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_relative "cli/viz"
Viz.new(options.dup).run
end
|