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

Defined in:
lib/kettle/jem.rb

Class Method Summary collapse

Class Method Details

.compare(before, after) ⇒ Object



2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
# File 'lib/kettle/jem.rb', line 2347

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



2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
# File 'lib/kettle/jem.rb', line 2330

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