Class: Bundler::CLI
Defined Under Namespace
Modules: Common
Classes: Add, Binstubs, Cache, Check, Clean, Config, Console, Doctor, Exec, Fund, 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_settings_and_root!
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
144
145
146
147
148
149
150
151
152
|
# File 'lib/bundler/cli.rb', line 144
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
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
|
# File 'lib/bundler/cli.rb', line 729
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
619
620
621
|
# File 'lib/bundler/cli.rb', line 619
def self.source_root
File.expand_path(File.join(File.dirname(__FILE__), "templates"))
end
|
Instance Method Details
#add(*gems) ⇒ Object
401
402
403
404
|
# File 'lib/bundler/cli.rb', line 401
def add(*gems)
require_relative "cli/add"
Add.new(options.dup, gems).run
end
|
#binstubs(*gems) ⇒ Object
383
384
385
386
|
# File 'lib/bundler/cli.rb', line 383
def binstubs(*gems)
require_relative "cli/binstubs"
Binstubs.new(options, gems).run
end
|
#cache ⇒ Object
471
472
473
474
475
476
477
478
479
480
|
# File 'lib/bundler/cli.rb', line 471
def cache
SharedHelpers.major_deprecation 2,
"The `--all` flag is deprecated because it relies on being " \
"remembered across bundler invocations, which bundler will no longer " \
"do in future versions. Instead please use `bundle config set cache_all true`, " \
"and stop using this flag" if ARGV.include?("--all")
require_relative "cli/cache"
Cache.new(options).run
end
|
#check ⇒ Object
178
179
180
181
182
183
|
# File 'lib/bundler/cli.rb', line 178
def check
remembered_flag_deprecation("path")
require_relative "cli/check"
Check.new(options).run
end
|
#clean ⇒ Object
628
629
630
631
|
# File 'lib/bundler/cli.rb', line 628
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
522
523
524
525
|
# File 'lib/bundler/cli.rb', line 522
def console(group = nil)
require_relative "cli/console"
Console.new(options, group).run
end
|
#doctor ⇒ Object
699
700
701
702
|
# File 'lib/bundler/cli.rb', line 699
def doctor
require_relative "cli/doctor"
Doctor.new(options).run
end
|
#env ⇒ Object
685
686
687
|
# File 'lib/bundler/cli.rb', line 685
def env
Env.write($stdout)
end
|
#exec(*args) ⇒ Object
492
493
494
495
|
# File 'lib/bundler/cli.rb', line 492
def exec(*args)
require_relative "cli/exec"
Exec.new(options, args).run
end
|
#fund ⇒ Object
445
446
447
448
|
# File 'lib/bundler/cli.rb', line 445
def fund
require_relative "cli/fund"
Fund.new(options).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
142
|
# 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", __dir__)
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)
man_page = man_pages[command]
if Bundler.which("man") && man_path !~ %r{^file:/.+!/META-INF/jruby.home/.+}
Kernel.exec "man #{man_page}"
else
puts File.read("#{man_path}/#{File.basename(man_page)}.ronn")
end
elsif command_path = Bundler.which("bundler-#{cli}")
Kernel.exec(command_path, "--help")
else
super
end
end
|
#info(gem_name) ⇒ Object
360
361
362
363
|
# File 'lib/bundler/cli.rb', line 360
def info(gem_name)
require_relative "cli/info"
Info.new(options, gem_name).run
end
|
#init ⇒ Object
161
162
163
164
|
# File 'lib/bundler/cli.rb', line 161
def init
require_relative "cli/init"
Init.new(options.dup).run
end
|
#inject(name, version) ⇒ Object
646
647
648
649
650
|
# File 'lib/bundler/cli.rb', line 646
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
248
249
250
251
252
253
254
255
256
257
258
259
260
261
|
# File 'lib/bundler/cli.rb', line 248
def install
SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
%w[clean deployment frozen no-prune path shebang system without with].each do |option|
remembered_flag_deprecation(option)
end
remembered_negative_flag_deprecation("no-deployment")
require_relative "cli/install"
Bundler.settings.temporary(:no_install => false) do
Install.new(options.dup).run
end
end
|
#issue ⇒ Object
705
706
707
708
|
# File 'lib/bundler/cli.rb', line 705
def issue
require_relative "cli/issue"
Issue.new.run
end
|
#licenses ⇒ Object
545
546
547
548
549
550
551
552
553
554
555
556
|
# File 'lib/bundler/cli.rb', line 545
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
351
352
353
354
|
# File 'lib/bundler/cli.rb', line 351
def list
require_relative "cli/list"
List.new(options).run
end
|
#lock ⇒ Object
679
680
681
682
|
# File 'lib/bundler/cli.rb', line 679
def lock
require_relative "cli/lock"
Lock.new(options).run
end
|
#open(name) ⇒ Object
515
516
517
518
|
# File 'lib/bundler/cli.rb', line 515
def open(name)
require_relative "cli/open"
Open.new(options, name).run
end
|
#outdated(*gems) ⇒ Object
437
438
439
440
|
# File 'lib/bundler/cli.rb', line 437
def outdated(*gems)
require_relative "cli/outdated"
Outdated.new(options, gems).run
end
|
636
637
638
639
|
# File 'lib/bundler/cli.rb', line 636
def platform
require_relative "cli/platform"
Platform.new(options).run
end
|
#pristine(*gems) ⇒ Object
716
717
718
719
|
# File 'lib/bundler/cli.rb', line 716
def pristine(*gems)
require_relative "cli/pristine"
Pristine.new(gems).run
end
|
#remove(*gems) ⇒ Object
193
194
195
196
|
# File 'lib/bundler/cli.rb', line 193
def remove(*gems)
require_relative "cli/remove"
Remove.new(gems, options).run
end
|
#show(gem_name = nil) ⇒ Object
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
|
# File 'lib/bundler/cli.rb', line 321
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
303
304
305
306
307
308
309
|
# File 'lib/bundler/cli.rb', line 303
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
570
571
572
573
574
|
# File 'lib/bundler/cli.rb', line 570
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
|