legit 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Legit
2
2
 
3
3
  [![Build Status](https://travis-ci.org/dillonkearns/legit.png)](https://travis-ci.org/dillonkearns/legit)
4
+ [![Coverage Status](https://coveralls.io/repos/dillonkearns/legit/badge.png?branch=master)](https://coveralls.io/r/dillonkearns/legit)
4
5
  [![Gem Version](https://fury-badge.herokuapp.com/rb/legit.png)](http://badge.fury.io/rb/legit)
5
6
  [![Dependency Status](https://gemnasium.com/dillonkearns/legit.png)](https://gemnasium.com/dillonkearns/legit)
6
7
  [![Code Climate](https://codeclimate.com/github/dillonkearns/legit.png)](https://codeclimate.com/github/dillonkearns/legit)
data/legit.gemspec CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |gem|
23
23
  gem.add_development_dependency "guard-minitest"
24
24
  gem.add_development_dependency "growl"
25
25
  gem.add_development_dependency "rb-fsevent"
26
+ gem.add_development_dependency "coveralls"
26
27
 
27
28
  gem.add_runtime_dependency "thor", "~> 0.17.0"
28
29
  gem.add_runtime_dependency "rugged", "0.17.0.b7" # need version 0.17 for a bug accessing Rugged::Repo.config in 0.16
data/lib/legit/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Legit
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
data/lib/legit.rb CHANGED
@@ -1,8 +1,9 @@
1
1
  require 'legit_helper'
2
- require 'thor'
3
2
 
4
3
  module Legit
5
4
  class CLI < Thor
5
+ include Thor::Actions
6
+
6
7
  desc "log [ARGS]", "print a graph-like log"
7
8
  method_option :me, :type => :boolean, :desc => 'Only include my commits'
8
9
  def log(*args)
@@ -19,14 +20,17 @@ module Legit
19
20
  desc "catch-todos [TODO_FORMAT]", "Abort commit if any todos in TODO_FORMAT found"
20
21
  method_option :enable, :type => :boolean, :desc => 'Enable todo checking'
21
22
  method_option :disable, :type => :boolean, :desc => 'Disable todo checking'
23
+ method_option :warn, :type => :boolean, :desc => 'Turn on warn mode'
22
24
  def catch_todos(todo_format = "TODO")
23
25
  if options[:enable]
24
- repo.config.delete('hooks.ignore-todos')
26
+ repo.config.delete('hooks.catch-todos-mode')
25
27
  elsif options[:disable]
26
- repo.config['hooks.ignore-todos'] = true
28
+ repo.config['hooks.catch-todos-mode'] = 'disable'
29
+ elsif options[:warn]
30
+ repo.config['hooks.catch-todos-mode'] = 'warn'
27
31
  else
28
- if repo.config['hooks.ignore-todos'] == 'true'
29
- show("[pre-commit hook] ignoring todos. Re-enable with `legit catch-todos --enable`", :low_warning)
32
+ if repo.config['hooks.catch-todos-mode'] == 'disable'
33
+ say("[pre-commit hook] ignoring todos. Re-enable with `legit catch-todos --enable`", :yellow)
30
34
  else
31
35
  run_catch_todos(todo_format)
32
36
  end
@@ -48,19 +52,19 @@ module Legit
48
52
 
49
53
  private
50
54
  def repo
51
- @repo ||= Rugged::Repository.new('.')
55
+ @repo ||= Rugged::Repository.new(Rugged::Repository.discover)
52
56
  end
53
57
 
54
58
  def run_catch_todos(todo_format)
55
59
  if todos_staged?(todo_format)
56
- if options[:warn]
60
+ if repo.config['hooks.catch-todos-mode'] == 'warn'
57
61
  exit 1 unless yes?("[pre-commit hook] Found staged `#{todo_format}`s. Do you still want to continue?", :yellow)
58
62
  else
59
- show("[pre-commit hook] Aborting commit... found staged `#{todo_format}`s.", :warning)
63
+ say("[pre-commit hook] Aborting commit... found staged `#{todo_format}`s.", :red)
60
64
  exit 1
61
65
  end
62
66
  else
63
- show("[pre-commit hook] Success: No `#{todo_format}`s staged.", :success)
67
+ say("[pre-commit hook] Success: No `#{todo_format}`s staged.", :green)
64
68
  end
65
69
  end
66
70
  end
data/lib/legit_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'rugged'
2
+ require 'thor'
2
3
 
3
4
  LOG_BASE_COMMAND = "git log --pretty=format:'%C(yellow)%h%Creset%C(bold cyan)%d%Creset %s %Cgreen(%cr)%Creset %C(bold magenta) <%an>%Creset' --graph --abbrev-commit --date=relative"
4
5
 
@@ -38,26 +39,10 @@ def delete_remote_branch!(branch_name)
38
39
  end
39
40
 
40
41
  def run_command(command)
41
- show(command, :low_warning) if ENV['DEBUG']
42
- system(command)
43
- end
44
-
45
- def show(message, type = :success)
46
- color =
47
- case type
48
- when :success
49
- :green
50
- when :warning
51
- :red
52
- when :low_warning
53
- :yellow
54
- when :normal
55
- :white
56
- else
57
- raise 'Unknown prompt type'
58
- end
59
-
60
- say(message, color)
42
+ options = {
43
+ :verbose => ENV.has_key?('LEGIT_DEBUG')
44
+ }
45
+ run(command, options)
61
46
  end
62
47
 
63
48
  def todos_staged?(todo_format)
data/test/legit_test.rb CHANGED
@@ -24,20 +24,53 @@ describe Legit::CLI do
24
24
  end
25
25
 
26
26
  describe 'legit catch-todos' do
27
- it "calls exit 1 when TODOs staged but not when disabled" do
27
+ it "calls exit 1 when TODOs staged but not disabled" do
28
28
  Legit::CLI.any_instance.expects(:todos_staged?).with('TODO').returns(true)
29
29
  Legit::CLI.any_instance.expects(:exit).with(1)
30
- Legit::CLI.any_instance.expects(:show).with("[pre-commit hook] Aborting commit... found staged `TODO`s.", :warning)
31
- Legit::CLI.start(['catch-todos'])
32
-
33
- Legit::CLI.start('catch-todos --disable'.split(' '))
34
- Legit::CLI.any_instance.expects(:exit).never
30
+ Legit::CLI.any_instance.expects(:say).with("[pre-commit hook] Aborting commit... found staged `TODO`s.", :red)
31
+ Legit::CLI.start('catch-todos'.split(' '))
35
32
  end
36
33
 
37
34
  it "doesn't call exit 1 when no TODOs staged" do
38
35
  Legit::CLI.any_instance.expects(:todos_staged?).with('TODO').returns(false)
39
36
  Legit::CLI.any_instance.expects(:exit).never
40
- Legit::CLI.any_instance.expects(:show).with("[pre-commit hook] Success: No `TODO`s staged.", :success)
37
+ Legit::CLI.any_instance.expects(:say).with("[pre-commit hook] Success: No `TODO`s staged.", :green)
38
+ Legit::CLI.start('catch-todos'.split(' '))
39
+ end
40
+
41
+ it "removes catch-todos-mode when called with --enable" do
42
+ config_mock = mock('config')
43
+ config_mock.expects(:delete).with('hooks.catch-todos-mode')
44
+ Legit::CLI.any_instance.stubs(:repo => stub({ :config => config_mock }))
45
+ Legit::CLI.start('catch-todos --enable'.split(' '))
46
+ end
47
+
48
+ it "sets catch-todos-mode to disable when called with --disable" do
49
+ config_mock = mock('config')
50
+ config_mock.expects(:[]=).with('hooks.catch-todos-mode', 'disable')
51
+ Legit::CLI.any_instance.stubs(:repo => stub({ :config => config_mock }))
52
+ Legit::CLI.start('catch-todos --disable'.split(' '))
53
+ end
54
+
55
+ it "sets catch-todos-mode to warn when called with --warn" do
56
+ config_mock = mock('config')
57
+ config_mock.expects(:[]=).with('hooks.catch-todos-mode', 'warn')
58
+ Legit::CLI.any_instance.stubs(:repo => stub({ :config => config_mock }))
59
+ Legit::CLI.start('catch-todos --warn'.split(' '))
60
+ end
61
+
62
+ it "skips catch-todos when disabled" do
63
+ stub_config('hooks.catch-todos-mode' => 'disable')
64
+ Legit::CLI.any_instance.expects(:run_catch_todos).never
65
+ Legit::CLI.any_instance.expects(:say).with("[pre-commit hook] ignoring todos. Re-enable with `legit catch-todos --enable`", :yellow)
66
+ Legit::CLI.start('catch-todos'.split(' '))
67
+ end
68
+
69
+ it "have exit status of 0 in warn mode when positive response" do
70
+ stub_config('hooks.catch-todos-mode' => 'warn')
71
+ Legit::CLI.any_instance.expects(:todos_staged?).returns(true)
72
+ Legit::CLI.any_instance.expects(:exit).never
73
+ Legit::CLI.any_instance.expects(:yes?).with("[pre-commit hook] Found staged `TODO`s. Do you still want to continue?", :yellow).returns(true)
41
74
  Legit::CLI.start('catch-todos'.split(' '))
42
75
  end
43
76
  end
data/test/test_helper.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
1
4
  require "minitest/autorun"
2
5
  require "minitest/reporters"
3
6
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-04 00:00:00.000000000 Z
12
+ date: 2013-03-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -123,6 +123,22 @@ dependencies:
123
123
  - - ! '>='
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: coveralls
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
126
142
  - !ruby/object:Gem::Dependency
127
143
  name: thor
128
144
  requirement: !ruby/object:Gem::Requirement
@@ -198,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
198
214
  version: '0'
199
215
  segments:
200
216
  - 0
201
- hash: -1036208191887355172
217
+ hash: 3336823418665542283
202
218
  requirements: []
203
219
  rubyforge_project:
204
220
  rubygems_version: 1.8.23