donald 0.1.4 → 0.1.6

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/bin/donald CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
- require File.expand_path(File.dirname(__FILE__) + '/../lib/donald/merge_tool')
2
+ require File.expand_path(File.dirname(__FILE__) + '/../lib/donald')
3
3
 
4
4
  merge_tool = Donald::MergeTool.new(STDOUT, ARGV)
5
5
 
6
- merge_tool.start
6
+ merge_tool.start
@@ -0,0 +1,20 @@
1
+ module Donald
2
+ class Editor
3
+ DEFAULT_EDITOR = 'vim'
4
+
5
+ def initialize(editor_name = nil)
6
+ @editor_name = editor_name
7
+ end
8
+
9
+ def to_s
10
+ @editor_name || system_editor_variable || DEFAULT_EDITOR
11
+ end
12
+
13
+ private
14
+
15
+ def system_editor_variable
16
+ editor = `echo $EDITOR`
17
+ editor.chomp.size.zero? ? nil : editor
18
+ end
19
+ end
20
+ end
data/lib/donald/git.rb ADDED
@@ -0,0 +1,32 @@
1
+ module Donald
2
+ class Git
3
+ CONFLICTED_TYPES = ['unmerged', 'both modified', 'both added']
4
+
5
+ def conflicted_files
6
+ files = []
7
+
8
+ status.each_line do |line|
9
+ file = conflicted_file(line)
10
+ files << file unless file.nil?
11
+ end
12
+
13
+ files
14
+ end
15
+
16
+ private
17
+
18
+ def status
19
+ `git status`
20
+ end
21
+
22
+ def conflicted_file(line)
23
+ CONFLICTED_TYPES.each do |conflicted_type|
24
+ if line.match /#{conflicted_type}: (.*)/
25
+ return $1.strip
26
+ end
27
+ end
28
+
29
+ nil
30
+ end
31
+ end
32
+ end
@@ -1,19 +1,15 @@
1
1
  module Donald
2
- class Donald::MergeTool
3
- DELIMITER = '******************************'
4
- DEFAULT_EDITOR = 'vim'
5
-
6
- def initialize output, args = []
2
+ class MergeTool
3
+ def initialize(output, args = [])
7
4
  @output = output
8
5
  @options = parse_options args
9
6
  end
10
7
 
11
8
  def start
12
- files = unmerged_files git_status
9
+ files = Donald::Git.new.conflicted_files
13
10
 
14
11
  if files.any?
15
12
  print_files files
16
-
17
13
  call_vim files
18
14
  else
19
15
  print_no_files_message
@@ -22,38 +18,15 @@ module Donald
22
18
 
23
19
  private
24
20
 
25
- def git_status
26
- `git status`
27
- end
28
-
29
- def unmerged_files text
30
- files = []
31
-
32
- text.each_line do |line|
33
- file = conflicted_file(line)
34
- files << file unless file.nil?
35
- end
36
-
37
- files
38
- end
39
-
40
- def conflicted_file line
41
- conflicted_types = ['unmerged', 'both modified']
42
-
43
- conflicted_types.each do |conflicted_type|
44
- if line.match /#{conflicted_type}: (.*)/
45
- return $1.strip
46
- end
47
- end
48
-
49
- nil
50
- end
51
-
52
- def call_vim files
21
+ def call_vim(files)
53
22
  Kernel.system "#{editor}#{arguments(editor)} #{files.join(' ')}"
54
23
  end
24
+
25
+ def editor
26
+ @editor || @editor = Donald::Editor.new(@options[:editor])
27
+ end
55
28
 
56
- def print_files files
29
+ def print_files(files)
57
30
  print_delimiter
58
31
 
59
32
  files.each {|f| @output.puts f}
@@ -70,10 +43,10 @@ module Donald
70
43
  end
71
44
 
72
45
  def print_delimiter
73
- @output.puts DELIMITER
46
+ @output.puts '*' * 30
74
47
  end
75
48
 
76
- def parse_options args
49
+ def parse_options(args)
77
50
  options = {}
78
51
 
79
52
  options.merge! :editor => 'vim' if args.include?('--vim')
@@ -84,18 +57,8 @@ module Donald
84
57
  options
85
58
  end
86
59
 
87
- def editor
88
- editor = @options[:editor] || system_editor_variable || DEFAULT_EDITOR
89
- end
90
-
91
- def system_editor_variable
92
- editor = `echo $EDITOR`.chomp
93
-
94
- editor.size.zero? ? nil : editor
95
- end
96
-
97
- def arguments editor
98
- " #{tab_argument} #{search_argument}" if editor.include?('vim')
60
+ def arguments(editor)
61
+ " #{tab_argument} #{search_argument}" if editor.to_s.include? 'vim'
99
62
  end
100
63
 
101
64
  def tab_argument
data/lib/donald.rb ADDED
@@ -0,0 +1,2 @@
1
+ Dir.glob(File.dirname(__FILE__) + '/donald/*.rb').each { |file| require file }
2
+
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: donald
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 6
10
+ version: 0.1.6
5
11
  platform: ruby
6
12
  authors:
7
13
  - Bruno Grasselli
@@ -9,7 +15,7 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2010-04-24 00:00:00 -03:00
18
+ date: 2010-07-18 00:00:00 -03:00
13
19
  default_executable: donald
14
20
  dependencies: []
15
21
 
@@ -25,6 +31,9 @@ files:
25
31
  - README.textile
26
32
  - LICENSE
27
33
  - bin/donald
34
+ - lib/donald.rb
35
+ - lib/donald/git.rb
36
+ - lib/donald/editor.rb
28
37
  - lib/donald/merge_tool.rb
29
38
  has_rdoc: true
30
39
  homepage: http://brunograsselli.com.br
@@ -36,21 +45,27 @@ rdoc_options: []
36
45
  require_paths:
37
46
  - lib
38
47
  required_ruby_version: !ruby/object:Gem::Requirement
48
+ none: false
39
49
  requirements:
40
50
  - - ">="
41
51
  - !ruby/object:Gem::Version
52
+ hash: 3
53
+ segments:
54
+ - 0
42
55
  version: "0"
43
- version:
44
56
  required_rubygems_version: !ruby/object:Gem::Requirement
57
+ none: false
45
58
  requirements:
46
59
  - - ">="
47
60
  - !ruby/object:Gem::Version
61
+ hash: 3
62
+ segments:
63
+ - 0
48
64
  version: "0"
49
- version:
50
65
  requirements: []
51
66
 
52
67
  rubyforge_project:
53
- rubygems_version: 1.3.5
68
+ rubygems_version: 1.3.7
54
69
  signing_key:
55
70
  specification_version: 3
56
71
  summary: Simple vim based mergetool for git users.