kablame 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/bin/git-kablame CHANGED
@@ -1,20 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
  #
3
3
 
4
- usage = <<USAGE
5
- Run git-kablame
6
- Usage: git-kablame <directory>
7
- USAGE
8
-
9
4
  require 'fileutils'
10
-
11
- target = ARGV.first
12
-
13
- if target.nil? || target.empty?
14
- puts usage
15
- exit(0)
16
- end
17
5
  require 'rubygems'
18
6
  gem 'kablame'
19
7
  require 'kablame'
20
- GitKablame.new(target).kablame
8
+
9
+ GitKablame.kablame(ARGV)
data/bin/svn-kablame CHANGED
@@ -1,20 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
  #
3
3
 
4
- usage = <<USAGE
5
- Run git-kablame
6
- Usage: git-kablame <directory>
7
- USAGE
8
-
9
4
  require 'fileutils'
10
-
11
- target = ARGV.first
12
-
13
- if target.nil? || target.empty?
14
- puts usage
15
- exit(0)
16
- end
17
5
  require 'rubygems'
18
6
  gem 'kablame'
19
7
  require 'kablame'
20
- SvnKablame.new(target).kablame
8
+
9
+ SvnKablame.kablame(ARGV)
data/lib/kablame.rb CHANGED
@@ -1,9 +1,10 @@
1
+ require 'kablame_options'
1
2
  class Kablame
2
3
 
3
4
  def initialize(dirs = nil, formats = nil)
4
5
  @users = {}
5
- @folders = dirs.split.map {|dir| dir.sub(/\/+\Z/, '') }
6
- @formats = formats ? formats.split : %w{rb}
6
+ @folders = dirs.map {|dir| dir.sub(/\/+\Z/, '') }
7
+ @formats = formats || %w{rb}
7
8
  end
8
9
 
9
10
  def kablame
@@ -40,7 +41,7 @@ class Kablame
40
41
  @users.values.sort.each do |user|
41
42
  puts user.to_s
42
43
  end
43
- puts "**LOSER** #{@users.values.sort.last.name} **LOSER**"
44
+ puts "**LOSER** #{@users.values.sort.last.name} **LOSER**" unless @users.length == 1
44
45
  end
45
46
 
46
47
 
@@ -51,6 +52,17 @@ class Kablame
51
52
  def file_format_regex
52
53
  %r{\.(#{@formats.join('|')})}
53
54
  end
55
+
56
+ def self.kablame(args)
57
+ formats = KablameOptions.new(type).format_parse(args)
58
+ targets = args
59
+
60
+ if targets.nil? || targets.empty?
61
+ KablameOptions.print_usage(type)
62
+ exit(0)
63
+ end
64
+ new(targets, formats).kablame
65
+ end
54
66
  end
55
67
 
56
68
  class SvnKablame < Kablame
@@ -62,19 +74,19 @@ class SvnKablame < Kablame
62
74
  `svn blame #{filename}`.split("\n")
63
75
  end
64
76
 
65
- def version_control; 'svn'; end
77
+ def self.type; 'svn'; end
66
78
  end
67
79
 
68
80
  class GitKablame < Kablame
69
81
  def blank_line_regex; /\(.+[\+-]\d{4}\s+\d+\)(\s*)$/; end
70
82
 
71
- def name_match_regex; /\((.+)\s+\d{4}\-\d{2}/; end
83
+ def name_match_regex; /\(([^\)]+)\s+\d{4}\-\d{2}/; end
72
84
 
73
85
  def get_blame_lines(filename)
74
86
  `git blame #{filename}`.split("\n")
75
87
  end
76
88
 
77
- def version_control; 'git'; end
89
+ def self.type; 'git'; end
78
90
  end
79
91
 
80
92
  class KablameUser
@@ -0,0 +1,31 @@
1
+ require 'optparse'
2
+
3
+ class KablameOptions
4
+
5
+ def opts
6
+ OptionParser.new do |opts|
7
+ opts.banner = "Usage: #{@type}-kablame [options] <directories>"
8
+ opts.on("-f", "--formats xml,html", Array, "List of file formats to #{@type}-kablame") do |list|
9
+ @formats = list
10
+ end
11
+
12
+ opts.on_tail("-h", "--help", "Show this message") do
13
+ puts opts
14
+ exit
15
+ end
16
+ end
17
+ end
18
+
19
+ def initialize(type)
20
+ @type = type
21
+ end
22
+
23
+ def format_parse(args)
24
+ opts.parse!(args)
25
+ @formats
26
+ end
27
+
28
+ def self.print_usage(type)
29
+ puts self.new(type).opts
30
+ end
31
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kablame
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jacob Dunphy
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-06-10 00:00:00 -07:00
12
+ date: 2008-06-15 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -24,6 +24,7 @@ extra_rdoc_files: []
24
24
 
25
25
  files:
26
26
  - lib/kablame.rb
27
+ - lib/kablame_options.rb
27
28
  - bin/git-kablame
28
29
  - bin/svn-kablame
29
30
  has_rdoc: true