mirror of
https://github.com/ruby/ruby.git
synced 2025-08-24 05:25:34 +02:00

Prior to this commit `bundle binstubs --standalone --all` would output a
warning about not being able to generate a standalone binstub for
bundler.
This warning predates the `--all` option, and I don't think it makes
sense in this context. The warning makes good sense when explicitly
trying to generate a bundler standalone binstub with `bundle binstubs
bundler --standalone`, since that command won't do what the user might
have expected. But `--all` is not specifically asking for bundler, and
having it report each time that the bundler binstubs could not be
generated does not seem particularly helpful. The only way to make that
warning go away would be to stop using `--standalone --all`.
This commit skips the warning when running with the `--all` option.
e6a72e19eb
57 lines
1.8 KiB
Ruby
57 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Bundler
|
|
class CLI::Binstubs
|
|
attr_reader :options, :gems
|
|
def initialize(options, gems)
|
|
@options = options
|
|
@gems = gems
|
|
end
|
|
|
|
def run
|
|
Bundler.definition.validate_runtime!
|
|
path_option = options["path"]
|
|
path_option = nil if path_option&.empty?
|
|
Bundler.settings.set_command_option :bin, path_option if options["path"]
|
|
Bundler.settings.set_command_option_if_given :shebang, options["shebang"]
|
|
installer = Installer.new(Bundler.root, Bundler.definition)
|
|
|
|
installer_opts = {
|
|
:force => options[:force],
|
|
:binstubs_cmd => true,
|
|
:all_platforms => options["all-platforms"],
|
|
}
|
|
|
|
if options[:all]
|
|
raise InvalidOption, "Cannot specify --all with specific gems" unless gems.empty?
|
|
@gems = Bundler.definition.specs.map(&:name)
|
|
installer_opts.delete(:binstubs_cmd)
|
|
elsif gems.empty?
|
|
Bundler.ui.error "`bundle binstubs` needs at least one gem to run."
|
|
exit 1
|
|
end
|
|
|
|
gems.each do |gem_name|
|
|
spec = Bundler.definition.specs.find {|s| s.name == gem_name }
|
|
unless spec
|
|
raise GemNotFound, Bundler::CLI::Common.gem_not_found_message(
|
|
gem_name, Bundler.definition.specs
|
|
)
|
|
end
|
|
|
|
if options[:standalone]
|
|
if gem_name == "bundler"
|
|
Bundler.ui.warn("Sorry, Bundler can only be run via RubyGems.") unless options[:all]
|
|
next
|
|
end
|
|
|
|
Bundler.settings.temporary(:path => (Bundler.settings[:path] || Bundler.root)) do
|
|
installer.generate_standalone_bundler_executable_stubs(spec, installer_opts)
|
|
end
|
|
else
|
|
installer.generate_bundler_executable_stubs(spec, installer_opts)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|