git-delta 0.0.2 → 0.1.0
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.
- data/README.md +3 -1
- data/lib/git-delta.rb +2 -2
- data/lib/git-delta/reporter.rb +9 -6
- data/lib/git-delta/run.rb +52 -10
- data/lib/git-delta/version.rb +1 -1
- metadata +1 -1
data/README.md
CHANGED
data/lib/git-delta.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require_relative "git-delta/version"
|
2
|
+
require_relative "git-delta/reporter"
|
data/lib/git-delta/reporter.rb
CHANGED
@@ -17,6 +17,7 @@ module Git
|
|
17
17
|
end
|
18
18
|
end.compact
|
19
19
|
(@warnings ||= []).concat(w)
|
20
|
+
self
|
20
21
|
end
|
21
22
|
|
22
23
|
def delta
|
@@ -31,12 +32,14 @@ module Git
|
|
31
32
|
end
|
32
33
|
|
33
34
|
def report(verbose = false)
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
if verbose
|
36
|
+
data.each do |commit, plus, minus|
|
37
|
+
puts ("%4d %5d = %5d " % [plus, minus, plus + minus]) + commit
|
38
|
+
end
|
39
|
+
puts "** Warnings:", @warnings if @warnings && !@warnings.empty?
|
40
|
+
end
|
37
41
|
plus, minus, delta = plus_minus_delta
|
38
42
|
puts "#{plus} #{minus} = #{delta}"
|
39
|
-
puts "** Warnings:", @warnings if @warnings && !@warnings.empty?
|
40
43
|
end
|
41
44
|
|
42
45
|
def data
|
@@ -45,7 +48,7 @@ module Git
|
|
45
48
|
|
46
49
|
private
|
47
50
|
def git_log
|
48
|
-
extra = extra_args.join(' ')
|
51
|
+
extra = Array(extra_args).join(' ')
|
49
52
|
extra << "--author=#{`git config user.email`.strip}" unless extra.include? '--author='
|
50
53
|
`git log --oneline --shortstat --no-merges #{extra} -- #{file_filter}`
|
51
54
|
end
|
@@ -57,7 +60,7 @@ module Git
|
|
57
60
|
e << nil if e.empty?
|
58
61
|
p.product(e).map do |path, ext|
|
59
62
|
next path if ext.nil?
|
60
|
-
|
63
|
+
"'#{path}/*#{'.' unless ext.start_with?('.')}#{ext}'"
|
61
64
|
end.join(' ')
|
62
65
|
end
|
63
66
|
|
data/lib/git-delta/run.rb
CHANGED
@@ -1,14 +1,56 @@
|
|
1
|
-
|
1
|
+
require_relative "../git-delta"
|
2
2
|
|
3
|
-
|
3
|
+
class Git::Delta::Runner
|
4
|
+
def run(argv = ARGV)
|
5
|
+
if ARGV.delete('-rails')
|
6
|
+
rails
|
7
|
+
else
|
8
|
+
Git::Delta::Reporter.new(*parse_arg(argv)).filter_out(exclude).report(@verbose)
|
9
|
+
end
|
10
|
+
end
|
4
11
|
|
5
|
-
|
6
|
-
|
7
|
-
ARGV.each{|a| split[a[0]] << a}
|
12
|
+
def parse_arg(argv)
|
13
|
+
@verbose ||= ARGV.delete('-v')
|
8
14
|
|
9
|
-
|
10
|
-
.
|
11
|
-
|
12
|
-
|
13
|
-
|
15
|
+
split = Hash.new{|h, k| h['path']}.merge!('.' => [], '-' => [], 'path' => [])
|
16
|
+
argv.each{|a| split[a[0]] << a}
|
17
|
+
|
18
|
+
split.values_at('path', '.', '-')
|
19
|
+
end
|
20
|
+
|
21
|
+
def exclude
|
22
|
+
@excl ||= (File.read('./.ignore_commits') rescue File.read('tmp/.ignore_commits') rescue '')
|
23
|
+
end
|
24
|
+
|
25
|
+
def rails
|
26
|
+
app = %w[app lib]
|
27
|
+
categs = {
|
28
|
+
js: [app, %w[js coffee hbs]],
|
29
|
+
ruby: [app, %w[rb]],
|
30
|
+
erb: [app, %w[erb haml]],
|
31
|
+
app: [app, %w[erb haml rb js coffee hbs]],
|
32
|
+
test: [%w[test spec], %w[rb]],
|
33
|
+
}
|
34
|
+
|
35
|
+
pmd = categs.map do |kind, args|
|
36
|
+
Git::Delta::Reporter.new(*args).filter_out(exclude).plus_minus_delta
|
37
|
+
end
|
38
|
+
|
39
|
+
kinds = categs.keys
|
40
|
+
|
41
|
+
# pmd << pmd.transpose.map{|s| s.inject(:+)}
|
42
|
+
# kinds << 'total'
|
43
|
+
categs.zip(pmd) do |(kind, (paths, extensions)), (p, m, d)|
|
44
|
+
tot = total_lines(paths, extensions)
|
45
|
+
puts "%10s: %4d %5d = %5d (%2.2f%% of %d)" % [kind, p, m, d, 100.0 * d / tot, tot]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def total_lines(paths, extensions)
|
50
|
+
paths.product(extensions).map do |path, ext|
|
51
|
+
`find #{path} -name '*.#{ext}' -print0 | xargs -0 wc -l | tail -1`.to_i
|
52
|
+
end.inject(:+)
|
53
|
+
end
|
14
54
|
end
|
55
|
+
|
56
|
+
Git::Delta::Runner.new.run
|
data/lib/git-delta/version.rb
CHANGED