Class: ShowDiff

Inherits:
Object
  • Object
show all
Defined in:
lib/showdiff.rb

Instance Method Summary collapse

Instance Method Details

#diff(a, b) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/showdiff.rb', line 12

def diff(a, b)
  diffs = {:new => [], :modified => [], :deleted => []}
  b.each do |name, hash|
    if !a.include?(name)
      diffs[:new].push name
    elsif a[name] != hash
      diffs[:modified].push name
    end
  end
  a.each do |name, hash|
    diffs[:deleted].push name unless b.include?(name)
  end
  diffs[:new].each { |n| puts "+ N  ".green + n }
  diffs[:modified].each { |n| puts "~ M  ".blue + n }
  diffs[:deleted].each { |n| puts "- D  ".red + n }
end

#get_files(d) ⇒ Object



6
7
8
9
10
# File 'lib/showdiff.rb', line 6

def get_files(d)
  Dir[d + '/**/*'].select { |f| File.file?(f) }.map { |f|
    [f.gsub(/\A#{d}/, ''), Digest::MD5.hexdigest(File.read(f))]
  }.inject({}) { |r, s| r.merge!({s[0] => s[1]}) }
end