1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/lib/rubygems/indexer/master_index_builder.rb
drbrain fbf59bdbea Import RubyGems trunk revision 1493.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13862 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-10 07:48:56 +00:00

44 lines
901 B
Ruby

require 'rubygems/indexer'
# Construct the master Gem index file.
class Gem::Indexer::MasterIndexBuilder < Gem::Indexer::AbstractIndexBuilder
def start_index
super
@index = Gem::SourceIndex.new
end
def end_index
super
@file.puts @index.to_yaml
end
def cleanup
super
index_file_name = File.join @directory, @filename
compress index_file_name, "Z"
compressed_file_name = "#{index_file_name}.Z"
paranoid index_file_name, compressed_file_name
@files << compressed_file_name
end
def add(spec)
@index.add_spec(spec)
end
private
def paranoid(fn, compressed_fn)
data = File.open(fn, 'rb') do |fp| fp.read end
compressed_data = File.open(compressed_fn, 'rb') do |fp| fp.read end
if data != unzip(compressed_data) then
fail "Compressed file #{compressed_fn} does not match uncompressed file #{fn}"
end
end
end