commit_hookr 0.1.4 → 0.1.5
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/hookr +61 -9
- data/features/cli.feature +46 -0
- data/features/step_definitions/cli_steps.rb +12 -0
- data/features/support/env.rb +2 -0
- metadata +4 -4
- data/features/commit_hookr.feature +0 -9
- data/features/step_definitions/commit_hookr_steps.rb +0 -0
data/bin/hookr
CHANGED
@@ -1,16 +1,68 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
require "fileutils"
|
4
|
+
|
5
|
+
usage_info = "Usage: hookr init [template]"
|
6
|
+
usage_info += "\nCurrently your only template option is 'codebase'"
|
7
|
+
|
8
|
+
working_directory = FileUtils.pwd
|
9
|
+
commit_msg_file = "#{working_directory}/.git/hooks/commit-msg"
|
10
|
+
hookr_file = "#{working_directory}/.hookr"
|
11
|
+
|
3
12
|
if ARGV.size == 0
|
4
|
-
puts
|
13
|
+
puts usage_info
|
14
|
+
exit 1
|
15
|
+
elsif !File.exist?("#{working_directory}/.git")
|
16
|
+
puts "You should do this in the root directory of a Git project."
|
5
17
|
exit 1
|
6
18
|
end
|
7
19
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
20
|
+
case ARGV[0]
|
21
|
+
|
22
|
+
when "init"
|
23
|
+
case ARGV[1]
|
24
|
+
when nil
|
25
|
+
puts usage_info
|
26
|
+
exit 1
|
27
|
+
when "codebase"
|
28
|
+
puts "Yo dawg I herd u like commit hooks, so I put some file in ur directories:\n\n"
|
29
|
+
unless File.exist?(hookr_file)
|
30
|
+
FileUtils.cp "#{File.dirname(__FILE__)}/../lib/templates/#{ARGV[1]}.rb", hookr_file
|
31
|
+
puts " added: .hookr"
|
32
|
+
else
|
33
|
+
puts " exists: .hookr"
|
34
|
+
end
|
35
|
+
unless File.exist?(commit_msg_file)
|
36
|
+
FileUtils.cp "#{File.dirname(__FILE__)}/../lib/templates/commit-msg.rb", commit_msg_file
|
37
|
+
puts " added: .git/hooks/commit-msg"
|
38
|
+
else
|
39
|
+
FileUtils.cp "#{File.dirname(__FILE__)}/../lib/templates/commit-msg.rb", commit_msg_file
|
40
|
+
puts " updated: .git/hooks/commit-msg"
|
41
|
+
end
|
42
|
+
FileUtils.chmod 0755, commit_msg_file
|
43
|
+
puts "\n"
|
44
|
+
exit 0
|
45
|
+
else
|
46
|
+
puts "Sorry, the only template available right now is 'codebase'. You can add your own .hookr template, of course."
|
47
|
+
exit 1
|
48
|
+
end
|
49
|
+
when "clear"
|
50
|
+
if File.exist?(commit_msg_file) && File.exist?(hookr_file)
|
51
|
+
puts "Well then, if it makes you happy...\n\n"
|
52
|
+
if File.exist?(hookr_file)
|
53
|
+
FileUtils.rm hookr_file
|
54
|
+
puts " removed: .hookr"
|
55
|
+
end
|
56
|
+
if File.exist?(commit_msg_file)
|
57
|
+
FileUtils.rm commit_msg_file
|
58
|
+
puts " removed: .git/hooks/commit-msg"
|
59
|
+
end
|
60
|
+
puts "\n"
|
61
|
+
exit 0
|
62
|
+
else
|
63
|
+
puts "There's nothing to clear."
|
64
|
+
end
|
65
|
+
exit 0
|
66
|
+
else
|
67
|
+
puts usage_info
|
14
68
|
end
|
15
|
-
|
16
|
-
puts "Yo dawg I herd u like commit hooks, so I put some files in ur directories."
|
@@ -0,0 +1,46 @@
|
|
1
|
+
Feature: commit_hookr Command Line Interface
|
2
|
+
In order to set up interactive Git commit menus
|
3
|
+
As a cool developer
|
4
|
+
I want to use the hookr command to add and remove commit hooks
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given a directory named "~/some_project"
|
8
|
+
And I cd to "~/some_project"
|
9
|
+
And I run "git init"
|
10
|
+
|
11
|
+
Scenario: Run hookr in a directory that's not a Git project root
|
12
|
+
Given I run "rm -rf .git"
|
13
|
+
When I run hookr with "init codebase"
|
14
|
+
Then I should see "You should do this in the root directory of a Git project."
|
15
|
+
And the exit status should be 1
|
16
|
+
|
17
|
+
Scenario: Run hookr without telling it what to do
|
18
|
+
When I run hookr with ""
|
19
|
+
Then I should see the usage info
|
20
|
+
And the exit status should be 1
|
21
|
+
|
22
|
+
Scenario: Initialize commit hook
|
23
|
+
When I run hookr with "init"
|
24
|
+
Then I should see the usage info
|
25
|
+
And the exit status should be 1
|
26
|
+
|
27
|
+
When I run hookr with "init lighthouse"
|
28
|
+
Then I should see "Sorry, the only template available right now is 'codebase'."
|
29
|
+
And the exit status should be 1
|
30
|
+
|
31
|
+
When I run hookr with "init codebase"
|
32
|
+
Then I should see "Yo dawg I herd u like commit hooks, so I put some file in ur directories:"
|
33
|
+
And the exit status should be 0
|
34
|
+
And the following files should exist:
|
35
|
+
| .hookr |
|
36
|
+
| .git/hooks/commit-msg |
|
37
|
+
|
38
|
+
Scenario: Clear commit hook
|
39
|
+
When I run hookr with "init codebase"
|
40
|
+
When I run hookr with "clear"
|
41
|
+
Then I should see "Well then, if it makes you happy..."
|
42
|
+
|
43
|
+
Scenario: Clear non-existent commit hook
|
44
|
+
Given there are no commit hook files
|
45
|
+
When I run hookr with "clear"
|
46
|
+
Then I should see "There's nothing to clear."
|
@@ -0,0 +1,12 @@
|
|
1
|
+
When /^I run hookr with "([^\"]*)"$/ do |command|
|
2
|
+
When "I run \"#{File.dirname(__FILE__)}/../../bin/hookr #{command}\""
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^I should see the usage info$/ do
|
6
|
+
Then "I should see \"Usage:\""
|
7
|
+
end
|
8
|
+
|
9
|
+
Given /^there are no commit hook files$/ do
|
10
|
+
Given "I run \"rm .hook\""
|
11
|
+
And "I run \"rm .git/hooks/commit-msg\""
|
12
|
+
end
|
data/features/support/env.rb
CHANGED
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 5
|
9
|
+
version: 0.1.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Michael Bumann
|
@@ -53,8 +53,8 @@ extra_rdoc_files:
|
|
53
53
|
- README.rdoc
|
54
54
|
files:
|
55
55
|
- bin/hookr
|
56
|
-
- features/
|
57
|
-
- features/step_definitions/
|
56
|
+
- features/cli.feature
|
57
|
+
- features/step_definitions/cli_steps.rb
|
58
58
|
- features/support/env.rb
|
59
59
|
- lib/commit_hookr.rb
|
60
60
|
- lib/templates/codebase.rb
|
File without changes
|