Module: Kettle::Jem::SelfTest::Manifest

Defined in:
lib/kettle/jem.rb

Class Method Summary collapse

Class Method Details

.compare(before, after) ⇒ Object



2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
# File 'lib/kettle/jem.rb', line 2472

def compare(before, after)
  all_keys = (before.keys | after.keys).sort
  result = {matched: [], changed: [], added: [], removed: []}
  all_keys.each do |key|
    before_sha = before[key]
    after_sha = after[key]
    if before_sha.nil?
      result[:added] << key
    elsif after_sha.nil?
      result[:removed] << key
    elsif before_sha == after_sha
      result[:matched] << key
    else
      result[:changed] << key
    end
  end
  result
end

.generate(dir) ⇒ Object



2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
# File 'lib/kettle/jem.rb', line 2455

def generate(dir)
  result = {}
  dir = dir.to_s
  return result unless Dir.exist?(dir)

  Find.find(dir) do |path|
    next if File.directory?(path)

    content = File.binread(path)
    relative_path = path.sub(%r{^#{Regexp.escape(dir)}/?}, "")
    result[relative_path] = Digest::SHA256.hexdigest(content) unless relative_path.empty?
  rescue
    next
  end
  result.sort.to_h
end