mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Merge rubygems master.
This is RC version of Rubygems 2.7.0.
688fb7e83c
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60133 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
6b05153a3a
commit
c00e84327f
96 changed files with 2021 additions and 701 deletions
|
@ -1,5 +1,4 @@
|
|||
# frozen_string_literal: true
|
||||
require 'digest'
|
||||
require 'rubygems/util'
|
||||
|
||||
##
|
||||
|
@ -226,6 +225,8 @@ class Gem::Source::Git < Gem::Source
|
|||
# A hash for the git gem based on the git repository URI.
|
||||
|
||||
def uri_hash # :nodoc:
|
||||
require 'digest' # required here to avoid deadlocking in Gem.activate_bin_path (because digest is a gem on 2.5+)
|
||||
|
||||
normalized =
|
||||
if @repository =~ %r%^\w+://(\w+@)?% then
|
||||
uri = URI(@repository).normalize.to_s.sub %r%/$%,''
|
||||
|
|
|
@ -9,6 +9,7 @@ class Gem::Source::Local < Gem::Source
|
|||
@specs = nil
|
||||
@api_uri = nil
|
||||
@uri = nil
|
||||
@load_specs_names = {}
|
||||
end
|
||||
|
||||
##
|
||||
|
@ -34,45 +35,47 @@ class Gem::Source::Local < Gem::Source
|
|||
end
|
||||
|
||||
def load_specs type # :nodoc:
|
||||
names = []
|
||||
@load_specs_names[type] ||= begin
|
||||
names = []
|
||||
|
||||
@specs = {}
|
||||
@specs = {}
|
||||
|
||||
Dir["*.gem"].each do |file|
|
||||
begin
|
||||
pkg = Gem::Package.new(file)
|
||||
rescue SystemCallError, Gem::Package::FormatError
|
||||
# ignore
|
||||
else
|
||||
tup = pkg.spec.name_tuple
|
||||
@specs[tup] = [File.expand_path(file), pkg]
|
||||
|
||||
case type
|
||||
when :released
|
||||
unless pkg.spec.version.prerelease?
|
||||
names << pkg.spec.name_tuple
|
||||
end
|
||||
when :prerelease
|
||||
if pkg.spec.version.prerelease?
|
||||
names << pkg.spec.name_tuple
|
||||
end
|
||||
when :latest
|
||||
tup = pkg.spec.name_tuple
|
||||
|
||||
cur = names.find { |x| x.name == tup.name }
|
||||
if !cur
|
||||
names << tup
|
||||
elsif cur.version < tup.version
|
||||
names.delete cur
|
||||
names << tup
|
||||
end
|
||||
Dir["*.gem"].each do |file|
|
||||
begin
|
||||
pkg = Gem::Package.new(file)
|
||||
rescue SystemCallError, Gem::Package::FormatError
|
||||
# ignore
|
||||
else
|
||||
names << pkg.spec.name_tuple
|
||||
tup = pkg.spec.name_tuple
|
||||
@specs[tup] = [File.expand_path(file), pkg]
|
||||
|
||||
case type
|
||||
when :released
|
||||
unless pkg.spec.version.prerelease?
|
||||
names << pkg.spec.name_tuple
|
||||
end
|
||||
when :prerelease
|
||||
if pkg.spec.version.prerelease?
|
||||
names << pkg.spec.name_tuple
|
||||
end
|
||||
when :latest
|
||||
tup = pkg.spec.name_tuple
|
||||
|
||||
cur = names.find { |x| x.name == tup.name }
|
||||
if !cur
|
||||
names << tup
|
||||
elsif cur.version < tup.version
|
||||
names.delete cur
|
||||
names << tup
|
||||
end
|
||||
else
|
||||
names << pkg.spec.name_tuple
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
names
|
||||
names
|
||||
end
|
||||
end
|
||||
|
||||
def find_gem gem_name, version = Gem::Requirement.default, # :nodoc:
|
||||
|
@ -88,7 +91,7 @@ class Gem::Source::Local < Gem::Source
|
|||
if version.satisfied_by?(s.version)
|
||||
if prerelease
|
||||
found << s
|
||||
elsif !s.version.prerelease?
|
||||
elsif !s.version.prerelease? || version.prerelease?
|
||||
found << s
|
||||
end
|
||||
end
|
||||
|
|
|
@ -34,6 +34,10 @@ class Gem::Source::Lock < Gem::Source
|
|||
0 == (self <=> other)
|
||||
end
|
||||
|
||||
def hash # :nodoc:
|
||||
@wrapped.hash ^ 3
|
||||
end
|
||||
|
||||
##
|
||||
# Delegates to the wrapped source's fetch_spec method.
|
||||
|
||||
|
@ -46,4 +50,3 @@ class Gem::Source::Lock < Gem::Source
|
|||
end
|
||||
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue