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

Defined in:
lib/kettle/jem.rb

Class Method Summary collapse

Class Method Details

.compare(before, after) ⇒ Object



2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
# File 'lib/kettle/jem.rb', line 2404

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



2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
# File 'lib/kettle/jem.rb', line 2387

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