diff options
Diffstat (limited to 'lib/rubygems/dependency_installer.rb')
-rw-r--r-- | lib/rubygems/dependency_installer.rb | 108 |
1 files changed, 52 insertions, 56 deletions
diff --git a/lib/rubygems/dependency_installer.rb b/lib/rubygems/dependency_installer.rb index 400a5de5cf..b119dca1cf 100644 --- a/lib/rubygems/dependency_installer.rb +++ b/lib/rubygems/dependency_installer.rb @@ -1,12 +1,13 @@ # frozen_string_literal: true -require 'rubygems' -require 'rubygems/dependency_list' -require 'rubygems/package' -require 'rubygems/installer' -require 'rubygems/spec_fetcher' -require 'rubygems/user_interaction' -require 'rubygems/available_set' -require 'rubygems/deprecate' + +require_relative "../rubygems" +require_relative "dependency_list" +require_relative "package" +require_relative "installer" +require_relative "spec_fetcher" +require_relative "user_interaction" +require_relative "available_set" +require_relative "deprecate" ## # Installs a gem along with all its dependencies from local and remote gems. @@ -16,18 +17,18 @@ class Gem::DependencyInstaller extend Gem::Deprecate DEFAULT_OPTIONS = { # :nodoc: - :env_shebang => false, - :document => %w[ri], - :domain => :both, # HACK dup - :force => false, - :format_executable => false, # HACK dup - :ignore_dependencies => false, - :prerelease => false, - :security_policy => nil, # HACK NoSecurity requires OpenSSL. AlmostNo? Low? - :wrappers => true, - :build_args => nil, - :build_docs_in_background => false, - :install_as_default => false, + env_shebang: false, + document: %w[ri], + domain: :both, # HACK: dup + force: false, + format_executable: false, # HACK: dup + ignore_dependencies: false, + prerelease: false, + security_policy: nil, # HACK: NoSecurity requires OpenSSL. AlmostNo? Low? + wrappers: true, + build_args: nil, + build_docs_in_background: false, + install_as_default: false, }.freeze ## @@ -65,7 +66,7 @@ class Gem::DependencyInstaller # :build_args:: See Gem::Installer::new def initialize(options = {}) - @only_install_dir = !!options[:install_dir] + @only_install_dir = !options[:install_dir].nil? @install_dir = options[:install_dir] || Gem.dir @build_root = options[:build_root] @@ -109,7 +110,7 @@ class Gem::DependencyInstaller # gems should be considered. def consider_local? - @domain == :both or @domain == :local + @domain == :both || @domain == :local end ## @@ -117,7 +118,7 @@ class Gem::DependencyInstaller # gems should be considered. def consider_remote? - @domain == :both or @domain == :remote + @domain == :both || @domain == :remote end ## @@ -162,13 +163,11 @@ class Gem::DependencyInstaller specs = [] tuples.each do |tup, source| - begin - spec = source.fetch_spec(tup) - rescue Gem::RemoteFetcher::FetchError => e - errors << Gem::SourceFetchProblem.new(source, e) - else - specs << [spec, source] - end + spec = source.fetch_spec(tup) + rescue Gem::RemoteFetcher::FetchError => e + errors << Gem::SourceFetchProblem.new(source, e) + else + specs << [spec, source] end if @errors @@ -178,7 +177,6 @@ class Gem::DependencyInstaller end set << specs - rescue Gem::RemoteFetcher::FetchError => e # FIX if there is a problem talking to the network, we either need to always tell # the user (no really_verbose) or fail hard, not silently tell them that we just @@ -197,7 +195,7 @@ class Gem::DependencyInstaller def in_background(what) # :nodoc: fork_happened = false - if @build_docs_in_background and Process.respond_to?(:fork) + if @build_docs_in_background && Process.respond_to?(:fork) begin Process.fork do yield @@ -230,22 +228,22 @@ class Gem::DependencyInstaller @installed_gems = [] options = { - :bin_dir => @bin_dir, - :build_args => @build_args, - :document => @document, - :env_shebang => @env_shebang, - :force => @force, - :format_executable => @format_executable, - :ignore_dependencies => @ignore_dependencies, - :prerelease => @prerelease, - :security_policy => @security_policy, - :user_install => @user_install, - :wrappers => @wrappers, - :build_root => @build_root, - :install_as_default => @install_as_default, - :dir_mode => @dir_mode, - :data_mode => @data_mode, - :prog_mode => @prog_mode, + bin_dir: @bin_dir, + build_args: @build_args, + document: @document, + env_shebang: @env_shebang, + force: @force, + format_executable: @format_executable, + ignore_dependencies: @ignore_dependencies, + prerelease: @prerelease, + security_policy: @security_policy, + user_install: @user_install, + wrappers: @wrappers, + build_root: @build_root, + install_as_default: @install_as_default, + dir_mode: @dir_mode, + data_mode: @data_mode, + prog_mode: @prog_mode, } options[:install_dir] = @install_dir if @only_install_dir @@ -268,7 +266,7 @@ class Gem::DependencyInstaller end def install_development_deps # :nodoc: - if @development and @dev_shallow + if @development && @dev_shallow :shallow elsif @development :all @@ -289,17 +287,15 @@ class Gem::DependencyInstaller installer_set.force = @force if consider_local? - if dep_or_name =~ /\.gem$/ and File.file? dep_or_name + if dep_or_name =~ /\.gem$/ && File.file?(dep_or_name) src = Gem::Source::SpecificFile.new dep_or_name installer_set.add_local dep_or_name, src.spec, src version = src.spec.version if version == Gem::Requirement.default - elsif dep_or_name =~ /\.gem$/ + elsif dep_or_name =~ /\.gem$/ # rubocop:disable Performance/RegexpMatch Dir[dep_or_name].each do |name| - begin - src = Gem::Source::SpecificFile.new name - installer_set.add_local dep_or_name, src.spec, src - rescue Gem::Package::FormatError - end + src = Gem::Source::SpecificFile.new name + installer_set.add_local dep_or_name, src.spec, src + rescue Gem::Package::FormatError end # else This is a dependency. InstallerSet handles this case end |