diff options
Diffstat (limited to 'lib/rubygems')
-rw-r--r-- | lib/rubygems/bundler_version_finder.rb | 6 | ||||
-rw-r--r-- | lib/rubygems/commands/push_command.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/commands/setup_command.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/commands/unpack_command.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/dependency.rb | 1 | ||||
-rw-r--r-- | lib/rubygems/dependency_installer.rb | 6 | ||||
-rw-r--r-- | lib/rubygems/exceptions.rb | 6 | ||||
-rw-r--r-- | lib/rubygems/indexer.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/installer.rb | 6 | ||||
-rw-r--r-- | lib/rubygems/package.rb | 12 | ||||
-rw-r--r-- | lib/rubygems/remote_fetcher.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/request_set.rb | 4 | ||||
-rw-r--r-- | lib/rubygems/server.rb | 6 | ||||
-rw-r--r-- | lib/rubygems/source.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/specification.rb | 17 | ||||
-rw-r--r-- | lib/rubygems/test_case.rb | 10 | ||||
-rw-r--r-- | lib/rubygems/test_utilities.rb | 2 | ||||
-rw-r--r-- | lib/rubygems/user_interaction.rb | 4 | ||||
-rw-r--r-- | lib/rubygems/version.rb | 1 |
19 files changed, 63 insertions, 30 deletions
diff --git a/lib/rubygems/bundler_version_finder.rb b/lib/rubygems/bundler_version_finder.rb index baca170840..2f448c9562 100644 --- a/lib/rubygems/bundler_version_finder.rb +++ b/lib/rubygems/bundler_version_finder.rb @@ -1,3 +1,7 @@ +# frozen_string_literal: true + +require "rubygems/util" + module Gem::BundlerVersionFinder @without_filtering = false @@ -102,7 +106,7 @@ To install the missing version, run `gem install bundler:#{vr.first}` lockfile = case gemfile when "gems.rb" then "gems.locked" else "#{gemfile}.lock" - end.untaint + end.dup.untaint return unless File.file?(lockfile) diff --git a/lib/rubygems/commands/push_command.rb b/lib/rubygems/commands/push_command.rb index d294cbc8df..613c4e6ddf 100644 --- a/lib/rubygems/commands/push_command.rb +++ b/lib/rubygems/commands/push_command.rb @@ -13,7 +13,7 @@ class Gem::Commands::PushCommand < Gem::Command The push command uploads a gem to the push server (the default is https://rubygems.org) and adds it to the index. -The gem can be removed from the index (but only the index) using the yank +The gem can be removed from the index and deleted from the server using the yank command. For further discussion see the help for the yank command. EOF end diff --git a/lib/rubygems/commands/setup_command.rb b/lib/rubygems/commands/setup_command.rb index ee6ce88eae..b6690c9d54 100644 --- a/lib/rubygems/commands/setup_command.rb +++ b/lib/rubygems/commands/setup_command.rb @@ -385,7 +385,7 @@ By default, this RubyGems will install gem as: each {|default_gem| rm_r File.join(bundler_spec.gems_dir, default_gem) } end - bundler_bin_dir = File.join(Gem.default_dir, 'gems', bundler_spec.full_name, bundler_spec.bindir) + bundler_bin_dir = bundler_spec.bin_dir bundler_bin_dir = File.join(options[:destdir], bundler_bin_dir) unless Gem.win_platform? mkdir_p bundler_bin_dir bundler_spec.executables.each do |e| diff --git a/lib/rubygems/commands/unpack_command.rb b/lib/rubygems/commands/unpack_command.rb index b873f20d28..bdcfd524f1 100644 --- a/lib/rubygems/commands/unpack_command.rb +++ b/lib/rubygems/commands/unpack_command.rb @@ -183,7 +183,7 @@ command help for an example. when 'metadata' then metadata = entry.read when 'metadata.gz' then - metadata = Gem.gunzip entry.read + metadata = Gem::Util.gunzip entry.read end end end diff --git a/lib/rubygems/dependency.rb b/lib/rubygems/dependency.rb index 55873c71e8..3465666790 100644 --- a/lib/rubygems/dependency.rb +++ b/lib/rubygems/dependency.rb @@ -2,6 +2,7 @@ ## # The Dependency class holds a Gem name and a Gem::Requirement. +require "rubygems/bundler_version_finder" require "rubygems/requirement" class Gem::Dependency diff --git a/lib/rubygems/dependency_installer.rb b/lib/rubygems/dependency_installer.rb index 5a87f50956..879e085359 100644 --- a/lib/rubygems/dependency_installer.rb +++ b/lib/rubygems/dependency_installer.rb @@ -113,7 +113,7 @@ class Gem::DependencyInstaller ## #-- - # TODO remove, no longer used + # TODO remove at RubyGems 4, no longer used def add_found_dependencies to_do, dependency_list # :nodoc: seen = {} @@ -163,6 +163,7 @@ class Gem::DependencyInstaller dependency_list.remove_specs_unsatisfied_by dependencies end + deprecate :add_found_dependencies, :none, 2018, 12 ## # Creates an AvailableSet to install from based on +dep_or_name+ and @@ -321,7 +322,7 @@ class Gem::DependencyInstaller # Gathers all dependencies necessary for the installation from local and # remote sources unless the ignore_dependencies was given. #-- - # TODO remove at RubyGems 3 + # TODO remove at RubyGems 4 def gather_dependencies # :nodoc: specs = @available.all_specs @@ -354,6 +355,7 @@ class Gem::DependencyInstaller @gems_to_install = dependency_list.dependency_order.reverse end + deprecate :gather_dependencies, :none, 2018, 12 def in_background what # :nodoc: fork_happened = false diff --git a/lib/rubygems/exceptions.rb b/lib/rubygems/exceptions.rb index b7528761fc..328bd5f476 100644 --- a/lib/rubygems/exceptions.rb +++ b/lib/rubygems/exceptions.rb @@ -4,6 +4,8 @@ # Each exception needs a brief description and the scenarios where it is # likely to be raised +require 'rubygems/deprecate' + ## # Base exception class for RubyGems. All exception raised by RubyGems are a # subclass of this one. @@ -11,10 +13,12 @@ class Gem::Exception < RuntimeError ## #-- - # TODO: remove in RubyGems 3, nobody sets this + # TODO: remove in RubyGems 4, nobody sets this attr_accessor :source_exception # :nodoc: + extend Gem::Deprecate + deprecate :source_exception, :none, 2018, 12 end class Gem::CommandLineError < Gem::Exception; end diff --git a/lib/rubygems/indexer.rb b/lib/rubygems/indexer.rb index 3ea994414b..2e59e790d4 100644 --- a/lib/rubygems/indexer.rb +++ b/lib/rubygems/indexer.rb @@ -347,7 +347,7 @@ class Gem::Indexer data = Gem.read_binary path compressed_data = Gem.read_binary "#{path}.#{extension}" - unless data == Gem.inflate(compressed_data) then + unless data == Gem::Util.inflate(compressed_data) then raise "Compressed file #{compressed_path} does not match uncompressed file #{path}" end end diff --git a/lib/rubygems/installer.rb b/lib/rubygems/installer.rb index ee5fedeb64..0c58c29ac9 100644 --- a/lib/rubygems/installer.rb +++ b/lib/rubygems/installer.rb @@ -7,6 +7,7 @@ require 'rubygems/command' require 'rubygems/exceptions' +require 'rubygems/deprecate' require 'rubygems/package' require 'rubygems/ext' require 'rubygems/user_interaction' @@ -27,6 +28,8 @@ require 'fileutils' class Gem::Installer + extend Gem::Deprecate + ## # Paths where env(1) might live. Some systems are broken and have it in # /bin @@ -777,13 +780,14 @@ TEXT ## # Logs the build +output+ in +build_dir+, then raises Gem::Ext::BuildError. # - # TODO: Delete this for RubyGems 3. It remains for API compatibility + # TODO: Delete this for RubyGems 4. It remains for API compatibility def extension_build_error(build_dir, output, backtrace = nil) # :nodoc: builder = Gem::Ext::Builder.new spec, @build_args builder.build_error build_dir, output, backtrace end + deprecate :extension_build_error, :none, 2018, 12 ## # Reads the file index and extracts each file into the gem directory. diff --git a/lib/rubygems/package.rb b/lib/rubygems/package.rb index b924122827..729bbd6f79 100644 --- a/lib/rubygems/package.rb +++ b/lib/rubygems/package.rb @@ -429,6 +429,14 @@ EOM destination end + def normalize_path(pathname) + if Gem.win_platform? + pathname.downcase + else + pathname + end + end + def mkdir_p_safe mkdir, mkdir_options, destination_dir, file_name destination_dir = realpath File.expand_path(destination_dir) parts = mkdir.split(File::SEPARATOR) @@ -437,7 +445,7 @@ EOM path = File.expand_path(path + File::SEPARATOR + basename) lstat = File.lstat path rescue nil if !lstat || !lstat.directory? - unless path.start_with? destination_dir and (FileUtils.mkdir path, mkdir_options rescue false) + unless normalize_path(path).start_with? normalize_path(destination_dir) and (FileUtils.mkdir path, mkdir_options rescue false) raise Gem::Package::PathError.new(file_name, destination_dir) end end @@ -591,7 +599,7 @@ EOM end case file_name - when /^metadata(.gz)?$/ then + when "metadata", "metadata.gz" then load_spec entry when 'data.tar.gz' then verify_gz entry diff --git a/lib/rubygems/remote_fetcher.rb b/lib/rubygems/remote_fetcher.rb index 8f0cf0b402..80fb1aaaa5 100644 --- a/lib/rubygems/remote_fetcher.rb +++ b/lib/rubygems/remote_fetcher.rb @@ -293,7 +293,7 @@ class Gem::RemoteFetcher if data and !head and uri.to_s =~ /\.gz$/ begin - data = Gem.gunzip data + data = Gem::Util.gunzip data rescue Zlib::GzipFile::Error raise FetchError.new("server did not return a valid file", uri.to_s) end diff --git a/lib/rubygems/request_set.rb b/lib/rubygems/request_set.rb index 95a8eed1af..e54a7b8818 100644 --- a/lib/rubygems/request_set.rb +++ b/lib/rubygems/request_set.rb @@ -171,7 +171,9 @@ class Gem::RequestSet rescue Gem::RuntimeRequirementNotMetError => e recent_match = req.spec.set.find_all(req.request).sort_by(&:version).reverse_each.find do |s| s = s.spec - s.required_ruby_version.satisfied_by?(Gem.ruby_version) && s.required_rubygems_version.satisfied_by?(Gem.rubygems_version) + s.required_ruby_version.satisfied_by?(Gem.ruby_version) && + s.required_rubygems_version.satisfied_by?(Gem.rubygems_version) && + Gem::Platform.installable?(s) end if recent_match suggestion = "The last version of #{req.request} to support your Ruby & RubyGems was #{recent_match.version}. Try installing it with `gem install #{recent_match.name} -v #{recent_match.version}`" diff --git a/lib/rubygems/server.rb b/lib/rubygems/server.rb index 62c3dfe9cf..9ebd2f5e44 100644 --- a/lib/rubygems/server.rb +++ b/lib/rubygems/server.rb @@ -492,7 +492,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; } specs = Marshal.dump specs if req.path =~ /\.gz$/ then - specs = Gem.gzip specs + specs = Gem::Util.gzip specs res['content-type'] = 'application/x-gzip' else res['content-type'] = 'application/octet-stream' @@ -553,7 +553,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; } specs = Marshal.dump specs if req.path =~ /\.gz$/ then - specs = Gem.gzip specs + specs = Gem::Util.gzip specs res['content-type'] = 'application/x-gzip' else res['content-type'] = 'application/octet-stream' @@ -852,7 +852,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; } specs = Marshal.dump specs if req.path =~ /\.gz$/ then - specs = Gem.gzip specs + specs = Gem::Util.gzip specs res['content-type'] = 'application/x-gzip' else res['content-type'] = 'application/octet-stream' diff --git a/lib/rubygems/source.rb b/lib/rubygems/source.rb index b28b850660..7f38b6325f 100644 --- a/lib/rubygems/source.rb +++ b/lib/rubygems/source.rb @@ -155,7 +155,7 @@ class Gem::Source uri.path << '.rz' spec = fetcher.fetch_path uri - spec = Gem.inflate spec + spec = Gem::Util.inflate spec if update_cache? then FileUtils.mkdir_p cache_dir diff --git a/lib/rubygems/specification.rb b/lib/rubygems/specification.rb index 2560324b7a..49cd50794f 100644 --- a/lib/rubygems/specification.rb +++ b/lib/rubygems/specification.rb @@ -40,6 +40,8 @@ require 'uri' class Gem::Specification < Gem::BasicSpecification + extend Gem::Deprecate + # REFACTOR: Consider breaking out this version stuff into a separate # module. There's enough special stuff around it that it may justify # a separate class. @@ -715,6 +717,7 @@ class Gem::Specification < Gem::BasicSpecification # Deprecated: You must now specify the executable name to Gem.bin_path. attr_writer :default_executable + deprecate :default_executable=, :none, 2018, 12 ## # Allows deinstallation of gems with legacy platforms. @@ -1810,6 +1813,7 @@ class Gem::Specification < Gem::BasicSpecification end result end + deprecate :default_executable, :none, 2018, 12 ## # The default value for specification attribute +name+ @@ -2018,6 +2022,7 @@ class Gem::Specification < Gem::BasicSpecification def has_rdoc # :nodoc: true end + deprecate :has_rdoc, :none, 2018, 12 ## # Deprecated and ignored. @@ -2027,8 +2032,10 @@ class Gem::Specification < Gem::BasicSpecification def has_rdoc= ignored # :nodoc: @has_rdoc = true end + deprecate :has_rdoc=, :none, 2018, 12 alias :has_rdoc? :has_rdoc # :nodoc: + deprecate :has_rdoc?, :none, 2018, 12 ## # True if this gem has files in test_files @@ -3074,16 +3081,6 @@ open-ended dependency on #{dep} is not recommended @require_paths end - extend Gem::Deprecate - - # TODO: - # deprecate :has_rdoc, :none, 2011, 10 - # deprecate :has_rdoc?, :none, 2011, 10 - # deprecate :has_rdoc=, :none, 2011, 10 - # deprecate :default_executable, :none, 2011, 10 - # deprecate :default_executable=, :none, 2011, 10 - # deprecate :file_name, :cache_file, 2011, 10 - # deprecate :full_gem_path, :cache_file, 2011, 10 end # DOC: What is this and why is it here, randomly, at the end of this file? diff --git a/lib/rubygems/test_case.rb b/lib/rubygems/test_case.rb index aa6df267f2..f03515cc8f 100644 --- a/lib/rubygems/test_case.rb +++ b/lib/rubygems/test_case.rb @@ -88,6 +88,8 @@ end class Gem::TestCase < MiniTest::Unit::TestCase + extend Gem::Deprecate + attr_accessor :fetcher # :nodoc: attr_accessor :gem_repo # :nodoc: @@ -672,11 +674,13 @@ class Gem::TestCase < MiniTest::Unit::TestCase end ## - # TODO: remove in RubyGems 3.0 + # TODO: remove in RubyGems 4.0 def quick_spec name, version = '2' # :nodoc: util_spec name, version end + deprecate :quick_spec, :util_spec, 2018, 12 + ## # Builds a gem from +spec+ and places it in <tt>File.join @gemhome, @@ -774,7 +778,7 @@ class Gem::TestCase < MiniTest::Unit::TestCase ## # new_spec is deprecated as it is never used. # - # TODO: remove in RubyGems 3.0 + # TODO: remove in RubyGems 4.0 def new_spec name, version, deps = nil, *files # :nodoc: require 'rubygems/specification' @@ -815,6 +819,8 @@ class Gem::TestCase < MiniTest::Unit::TestCase spec end + # TODO: mark deprecate after replacing util_spec from new_spec + # deprecate :new_spec, :none, 2018, 12 def new_default_spec(name, version, deps = nil, *files) spec = util_spec name, version, deps diff --git a/lib/rubygems/test_utilities.rb b/lib/rubygems/test_utilities.rb index 83c9d2d0fe..3e17973dd4 100644 --- a/lib/rubygems/test_utilities.rb +++ b/lib/rubygems/test_utilities.rb @@ -64,7 +64,7 @@ class Gem::FakeFetcher data.call else if path.to_s =~ /gz$/ and not data.nil? and not data.empty? then - data = Gem.gunzip data + data = Gem::Util.gunzip data end data diff --git a/lib/rubygems/user_interaction.rb b/lib/rubygems/user_interaction.rb index cacd782e08..91236eec15 100644 --- a/lib/rubygems/user_interaction.rb +++ b/lib/rubygems/user_interaction.rb @@ -6,6 +6,7 @@ #++ require 'rubygems/util' +require 'rubygems/deprecate' ## # Module that defines the default UserInteraction. Any class including this @@ -170,6 +171,8 @@ end class Gem::StreamUI + extend Gem::Deprecate + ## # The input stream @@ -384,6 +387,7 @@ class Gem::StreamUI def debug(statement) @errs.puts statement end + deprecate :debug, :none, 2018, 12 ## # Terminate the application with exit code +status+, running any exit diff --git a/lib/rubygems/version.rb b/lib/rubygems/version.rb index ff5c1c1e72..fbf75996cd 100644 --- a/lib/rubygems/version.rb +++ b/lib/rubygems/version.rb @@ -170,6 +170,7 @@ class Gem::Version # True if the +version+ string matches RubyGems' requirements. def self.correct? version + return false if version.nil? !!(version.to_s =~ ANCHORED_VERSION_PATTERN) end |