Class: GitObjectBrowser::Dumper::PackedObjectsDumper

Inherits:
Object
  • Object
show all
Defined in:
lib/git-object-browser/dumper/packed_objects_dumper.rb

Instance Method Summary collapse

Constructor Details

#initialize(root, outdir) ⇒ PackedObjectsDumper

Returns a new instance of PackedObjectsDumper.



9
10
11
12
# File 'lib/git-object-browser/dumper/packed_objects_dumper.rb', line 9

def initialize(root, outdir)
  @root   = root
  @outdir = outdir
end

Instance Method Details

#dump(path, index) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/git-object-browser/dumper/packed_objects_dumper.rb', line 14

def dump(path, index)
  File.open(File.join(@root, path)) do |input|
    index.entries.each do |entry|
      dump_packed_object(index, input, entry[:offset], path)
    end
  end
end

#dump_packed_object(index, input, offset, path) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/git-object-browser/dumper/packed_objects_dumper.rb', line 22

def dump_packed_object(index, input, offset, path)
  obj = GitObjectBrowser::Models::PackedObject.new(index, input).parse(offset)
  wrapped = GitObjectBrowser::Models::WrappedObject.new(nil, path, obj)

  ostr = "0000#{ offset }"
  outfile = File.join(@outdir, path, ostr[-2,2], ostr[-4,2], "#{ offset }.json")
  FileUtils.mkdir_p(File.dirname(outfile))

  File.open(outfile, 'w') do |output|
    output << JSON.pretty_generate(wrapped.to_hash)
  end
end