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
147
148
149
150
151
152
153
154
155
|
# File 'lib/bundler/cli.rb', line 147
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
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
|
# File 'lib/bundler/cli.rb', line 732
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
622
623
624
|
# File 'lib/bundler/cli.rb', line 622
def self.source_root
File.expand_path(File.join(File.dirname(__FILE__), "templates"))
end
|
Instance Method Details
#add(*gems) ⇒ Object
404
405
406
407
|
# File 'lib/bundler/cli.rb', line 404
def add(*gems)
require_relative "cli/add"
Add.new(options.dup, gems).run
end
|
#binstubs(*gems) ⇒ Object
386
387
388
389
|
# File 'lib/bundler/cli.rb', line 386
def binstubs(*gems)
require_relative "cli/binstubs"
Binstubs.new(options, gems).run
end
|
#cache ⇒ Object
474
475
476
477
478
479
480
481
482
483
|
# File 'lib/bundler/cli.rb', line 474
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
181
182
183
184
185
186
|
# File 'lib/bundler/cli.rb', line 181
def check
remembered_flag_deprecation("path")
require_relative "cli/check"
Check.new(options).run
end
|
#clean ⇒ Object
631
632
633
634
|
# File 'lib/bundler/cli.rb', line 631
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
525
526
527
528
|
# File 'lib/bundler/cli.rb', line 525
def console(group = nil)
require_relative "cli/console"
Console.new(options, group).run
end
|
#doctor ⇒ Object
702
703
704
705
|
# File 'lib/bundler/cli.rb', line 702
def doctor
require_relative "cli/doctor"
Doctor.new(options).run
end
|
#env ⇒ Object
688
689
690
|
# File 'lib/bundler/cli.rb', line 688
def env
Env.write($stdout)
end
|
#exec(*args) ⇒ Object
495
496
497
498
|
# File 'lib/bundler/cli.rb', line 495
def exec(*args)
require_relative "cli/exec"
Exec.new(options, args).run
end
|
#fund ⇒ Object
448
449
450
451
|
# File 'lib/bundler/cli.rb', line 448
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
143
144
145
|
# 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_path = RbConfig::CONFIG["mandir"] unless File.directory?(man_path)
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
fallback_man_path = File.expand_path("../man", __FILE__)
puts File.read("#{fallback_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
363
364
365
366
|
# File 'lib/bundler/cli.rb', line 363
def info(gem_name)
require_relative "cli/info"
Info.new(options, gem_name).run
end
|
#init ⇒ Object
164
165
166
167
|
# File 'lib/bundler/cli.rb', line 164
def init
require_relative "cli/init"
Init.new(options.dup).run
end
|
#inject(name, version) ⇒ Object
649
650
651
652
653
|
# File 'lib/bundler/cli.rb', line 649
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
251
252
253
254
255
256
257
258
259
260
261
262
263
264
|
# File 'lib/bundler/cli.rb', line 251
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
708
709
710
711
|
# File 'lib/bundler/cli.rb', line 708
def issue
require_relative "cli/issue"
Issue.new.run
end
|
#licenses ⇒ Object
548
549
550
551
552
553
554
555
556
557
558
559
|
# File 'lib/bundler/cli.rb', line 548
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
354
355
356
357
|
# File 'lib/bundler/cli.rb', line 354
def list
require_relative "cli/list"
List.new(options).run
end
|
#lock ⇒ Object
682
683
684
685
|
# File 'lib/bundler/cli.rb', line 682
def lock
require_relative "cli/lock"
Lock.new(options).run
end
|
#open(name) ⇒ Object
518
519
520
521
|
# File 'lib/bundler/cli.rb', line 518
def open(name)
require_relative "cli/open"
Open.new(options, name).run
end
|
#outdated(*gems) ⇒ Object
440
441
442
443
|
# File 'lib/bundler/cli.rb', line 440
def outdated(*gems)
require_relative "cli/outdated"
Outdated.new(options, gems).run
end
|
639
640
641
642
|
# File 'lib/bundler/cli.rb', line 639
def platform
require_relative "cli/platform"
Platform.new(options).run
end
|
#pristine(*gems) ⇒ Object
719
720
721
722
|
# File 'lib/bundler/cli.rb', line 719
def pristine(*gems)
require_relative "cli/pristine"
Pristine.new(gems).run
end
|
#remove(*gems) ⇒ Object
196
197
198
199
|
# File 'lib/bundler/cli.rb', line 196
def remove(*gems)
require_relative "cli/remove"
Remove.new(gems, options).run
end
|
#show(gem_name = nil) ⇒ Object
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
|
# File 'lib/bundler/cli.rb', line 324
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
306
307
308
309
310
311
312
|
# File 'lib/bundler/cli.rb', line 306
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
573
574
575
576
577
|
# File 'lib/bundler/cli.rb', line 573
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
|