summaryrefslogtreecommitdiff
path: root/lib/rubygems/indexer
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/indexer')
-rw-r--r--lib/rubygems/indexer/marshal_index_builder.rb11
-rw-r--r--lib/rubygems/indexer/master_index_builder.rb11
-rw-r--r--lib/rubygems/indexer/quick_index_builder.rb6
3 files changed, 23 insertions, 5 deletions
diff --git a/lib/rubygems/indexer/marshal_index_builder.rb b/lib/rubygems/indexer/marshal_index_builder.rb
index 5e3ba7f5b9..e1a4d9f9b8 100644
--- a/lib/rubygems/indexer/marshal_index_builder.rb
+++ b/lib/rubygems/indexer/marshal_index_builder.rb
@@ -3,6 +3,15 @@ require 'rubygems/indexer'
# Construct the master Gem index file.
class Gem::Indexer::MarshalIndexBuilder < Gem::Indexer::MasterIndexBuilder
def end_index
- @file.write @index.dump
+ gems = {}
+ index = Gem::SourceIndex.new
+
+ @index.each do |name, gemspec|
+ gems[gemspec.original_name] = gemspec
+ end
+
+ index.instance_variable_get(:@gems).replace gems
+
+ @file.write index.dump
end
end
diff --git a/lib/rubygems/indexer/master_index_builder.rb b/lib/rubygems/indexer/master_index_builder.rb
index f435c44e41..dbe02370a9 100644
--- a/lib/rubygems/indexer/master_index_builder.rb
+++ b/lib/rubygems/indexer/master_index_builder.rb
@@ -10,7 +10,16 @@ class Gem::Indexer::MasterIndexBuilder < Gem::Indexer::AbstractIndexBuilder
def end_index
super
- @file.puts @index.to_yaml
+ @file.puts "--- !ruby/object:#{@index.class}"
+ @file.puts "gems:"
+
+ gems = @index.sort_by { |name, gemspec| gemspec.sort_obj }
+ gems.each do |name, gemspec|
+ yaml = gemspec.to_yaml.gsub(/^/, ' ')
+ yaml = yaml.sub(/\A ---/, '') # there's a needed extra ' ' here
+ @file.print " #{gemspec.original_name}:"
+ @file.puts yaml
+ end
end
def cleanup
diff --git a/lib/rubygems/indexer/quick_index_builder.rb b/lib/rubygems/indexer/quick_index_builder.rb
index 8805f3fe38..23c7ca696b 100644
--- a/lib/rubygems/indexer/quick_index_builder.rb
+++ b/lib/rubygems/indexer/quick_index_builder.rb
@@ -22,13 +22,13 @@ class Gem::Indexer::QuickIndexBuilder < Gem::Indexer::AbstractIndexBuilder
end
def add(spec)
- @file.puts spec.full_name
+ @file.puts spec.original_name
add_yaml(spec)
add_marshal(spec)
end
def add_yaml(spec)
- fn = File.join @directory, "#{spec.full_name}.gemspec.rz"
+ fn = File.join @directory, "#{spec.original_name}.gemspec.rz"
zipped = zip spec.to_yaml
File.open fn, "wb" do |gsfile| gsfile.write zipped end
end
@@ -38,7 +38,7 @@ class Gem::Indexer::QuickIndexBuilder < Gem::Indexer::AbstractIndexBuilder
FileUtils.mkdir_p File.join(@directory, "Marshal.#{Gem.marshal_version}")
fn = File.join @directory, "Marshal.#{Gem.marshal_version}",
- "#{spec.full_name}.gemspec.rz"
+ "#{spec.original_name}.gemspec.rz"
zipped = zip Marshal.dump(spec)
File.open fn, "wb" do |gsfile| gsfile.write zipped end