summaryrefslogtreecommitdiff
path: root/lib/rubygems/source/local.rb
diff options
context:
space:
mode:
-rw-r--r--lib/rubygems/source/local.rb73
1 files changed, 38 insertions, 35 deletions
@@ -9,6 +9,7 @@ class Gem::Source::Local < Gem::Source
@specs = nil
@api_uri = nil
@uri = nil
end
##
@@ -34,45 +35,47 @@ class Gem::Source::Local < Gem::Source
end
def load_specs type # :nodoc:
- names = []
-
- @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
else
- names << pkg.spec.name_tuple
end
end
- end
- names
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?
found << s
end
end