Sha256: 28cc33578c6b4e279f7600cd314008ebd0d733a8a298780d2f0bb266674ef27c
Contents?: true
Size: 1.83 KB
Versions: 1
Compression:
Stored size: 1.83 KB
Contents
# -*- coding: utf-8 -*- module GitObjectBrowser module Dumper class PlainFilesDumper def initialize(root, outdir) @root = root @outdir = outdir end def dump obj_files = [] # ! info/refs # info # logs # objects/info plain_files = [] subdirs = [] Dir.chdir(@root) do Dir.glob('*') do |path| next if %w{HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD CHERRY_PICK_HEAD}.include?(path) next if %w{dump index objects refs packed-refs}.include?(path) if File.directory?(path) subdirs << path else plain_files << path end end end subdirs << 'objects/info' subdirs.each do |dir| next unless File.directory?(File.join(@root, dir)) Dir.chdir(File.join(@root, dir)) do Dir.glob('**/*') do |path| # skip info/refs (InfoRefs) next if dir == 'info' && path == 'refs' if File.file?(path) plain_files << File.join(dir, path) end end end end plain_files.each do |path| outfile = File.join(@outdir, "#{ path }.json") FileUtils.mkdir_p(File.dirname(outfile)) puts "Write: #{path}\n" file = File.join(@root, path) File.open(file) do |input| File.open(outfile, "w") do |output| dump_object(input, output, path) end end end end def dump_object(input, output, path) obj = GitObjectBrowser::Models::PlainFile.new(input).parse wrapped = GitObjectBrowser::Models::WrappedObject.new(nil, path, obj) output << JSON.pretty_generate(wrapped.to_hash) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
git-object-browser-0.0.7 | lib/git-object-browser/dumper/plain_files_dumper.rb |