Sha256: a6e7b41732f4e87ca89f7437824adfb4a588ae5de8a0dd330c009ef7decbedbb

Contents?: true

Size: 1.13 KB

Versions: 10

Compression:

Stored size: 1.13 KB

Contents

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 "--- !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
    super

    index_file_name = File.join @directory, @filename

    compress index_file_name, "Z"
    paranoid index_file_name, "#{index_file_name}.Z"

    @files << "#{@filename}.Z"
  end

  def add(spec)
    @index.add_spec(spec)
  end

  private

  def paranoid(path, compressed_path)
    data = Gem.read_binary path
    compressed_data = Gem.read_binary compressed_path

    if data != unzip(compressed_data) then
      raise "Compressed file #{compressed_path} does not match uncompressed file #{path}"
    end
  end

end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
shoesgem-0.1514.0 shoes/ruby/lib/rubygems/indexer/master_index_builder.rb
shoesgem-0.1480.0 shoes/ruby/lib/rubygems/indexer/master_index_builder.rb
shoesgem-0.1469.0 shoes/ruby/lib/rubygems/indexer/master_index_builder.rb
shoesgem-0.1430.0 shoes/ruby/lib/rubygems/indexer/master_index_builder.rb
shoesgem-0.1429.0 shoes/ruby/lib/rubygems/indexer/master_index_builder.rb
shoesgem-0.1428.0 shoes/ruby/lib/rubygems/indexer/master_index_builder.rb
shoesgem-0.1426.0 shoes/ruby/lib/rubygems/indexer/master_index_builder.rb
shoesgem-0.1424.0 shoes/ruby/lib/rubygems/indexer/master_index_builder.rb
rubygems-update-1.1.0 lib/rubygems/indexer/master_index_builder.rb
rubygems-update-1.1.1 lib/rubygems/indexer/master_index_builder.rb