showdiff 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/bin/showdiff +5 -0
  2. data/lib/showdiff.rb +28 -0
  3. metadata +47 -0
data/bin/showdiff ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'showdiff'
4
+
5
+ diff(get_files(ARGV[0]), get_files(ARGV[1]))
data/lib/showdiff.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+ require 'digest/md5'
3
+ require 'colorize'
4
+
5
+ class ShowDiff
6
+ def get_files(d)
7
+ Dir[d + '/**/*'].select { |f| File.file?(f) }.map { |f|
8
+ [f.gsub(/\A#{d}/, ''), Digest::MD5.hexdigest(File.read(f))]
9
+ }.inject({}) { |r, s| r.merge!({s[0] => s[1]}) }
10
+ end
11
+
12
+ def diff(a, b)
13
+ diffs = {:new => [], :modified => [], :deleted => []}
14
+ b.each do |name, hash|
15
+ if !a.include?(name)
16
+ diffs[:new].push name
17
+ elsif a[name] != hash
18
+ diffs[:modified].push name
19
+ end
20
+ end
21
+ a.each do |name, hash|
22
+ diffs[:deleted].push name unless b.include?(name)
23
+ end
24
+ diffs[:new].each { |n| puts "+ N ".green + n }
25
+ diffs[:modified].each { |n| puts "~ M ".blue + n }
26
+ diffs[:deleted].each { |n| puts "- D ".red + n }
27
+ end
28
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: showdiff
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Aegis
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-01 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: basic dir diff
15
+ email:
16
+ executables:
17
+ - showdiff
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - lib/showdiff.rb
22
+ - bin/showdiff
23
+ homepage:
24
+ licenses: []
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ none: false
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 1.8.24
44
+ signing_key:
45
+ specification_version: 3
46
+ summary: basic dir diff
47
+ test_files: []