donald 0.1.4 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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.