captain_hoog 1.1.1 → 2.0.0
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.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/README.md +40 -18
- data/bin/hoog +5 -0
- data/captain_hoog.gemspec +4 -2
- data/features/init.feature +16 -0
- data/features/pull.feature +11 -0
- data/features/support/env.rb +4 -3
- data/features/support/steps/hooks_steps.rb +46 -13
- data/features/support/world.rb +21 -1
- data/features/testing.feature +18 -0
- data/features/version.feature +3 -3
- data/lib/captain_hoog/cli/git.rb +26 -0
- data/lib/captain_hoog/cli/hoog.rb +129 -0
- data/lib/captain_hoog/cli/pull.rb +14 -0
- data/lib/captain_hoog/{templates → cli/templates}/hoogfile.erb +0 -0
- data/lib/captain_hoog/{templates → cli/templates}/install.erb +1 -0
- data/lib/captain_hoog/cli/treasury.rb +15 -0
- data/lib/captain_hoog/cli.rb +9 -0
- data/lib/captain_hoog/core_ext/hash.rb +4 -4
- data/lib/captain_hoog/dependencies.rb +3 -0
- data/lib/captain_hoog/git.rb +2 -7
- data/lib/captain_hoog/message.rb +31 -0
- data/lib/captain_hoog/pre_git.rb +31 -10
- data/lib/captain_hoog/test/sandbox.rb +1 -1
- data/lib/captain_hoog/version.rb +1 -1
- data/lib/captain_hoog.rb +19 -12
- data/spec/fixtures/neverland.git/HEAD +1 -0
- data/spec/fixtures/neverland.git/config +6 -0
- data/spec/fixtures/neverland.git/description +1 -0
- data/spec/fixtures/neverland.git/hooks/applypatch-msg.sample +15 -0
- data/spec/fixtures/neverland.git/hooks/commit-msg.sample +24 -0
- data/spec/fixtures/neverland.git/hooks/post-update.sample +8 -0
- data/spec/fixtures/neverland.git/hooks/pre-applypatch.sample +14 -0
- data/spec/fixtures/neverland.git/hooks/pre-commit.sample +49 -0
- data/spec/fixtures/neverland.git/hooks/pre-push.sample +53 -0
- data/spec/fixtures/neverland.git/hooks/pre-rebase.sample +169 -0
- data/spec/fixtures/neverland.git/hooks/pre-receive.sample +24 -0
- data/spec/fixtures/neverland.git/hooks/prepare-commit-msg.sample +36 -0
- data/spec/fixtures/neverland.git/hooks/update.sample +128 -0
- data/spec/fixtures/neverland.git/info/exclude +6 -0
- data/spec/fixtures/plugins/test_plugins/divide.rb +4 -0
- data/spec/fixtures/plugins/test_plugins/passing/pure/foo/foo.rb +2 -1
- data/spec/lib/captain_hoog/git_spec.rb +2 -2
- data/spec/lib/captain_hoog/plugin_spec.rb +1 -1
- data/spec/lib/captain_hoog/pre_git_spec.rb +36 -19
- metadata +75 -11
- data/bin/githoog +0 -118
- data/lib/captain_hoog/errors.rb +0 -1
@@ -71,7 +71,7 @@ describe CaptainHoog::Git do
|
|
71
71
|
expect do
|
72
72
|
subject.message do
|
73
73
|
1
|
74
|
-
end
|
74
|
+
end.message
|
75
75
|
end.to raise_error(CaptainHoog::Errors::MessageResultNotValidError)
|
76
76
|
end
|
77
77
|
end
|
@@ -153,7 +153,7 @@ describe CaptainHoog::Git do
|
|
153
153
|
end.to_not raise_error
|
154
154
|
|
155
155
|
plugin.eval_plugin
|
156
|
-
expect(plugin.execute[:message]).to eq "It's 12."
|
156
|
+
expect(plugin.execute[:message].call).to eq "It's 12."
|
157
157
|
end
|
158
158
|
|
159
159
|
end
|
@@ -90,7 +90,7 @@ describe CaptainHoog::Plugin do
|
|
90
90
|
|
91
91
|
it "includes the test failure message at the :message key" do
|
92
92
|
expect(subject).to have_key(:message)
|
93
|
-
expect(subject[:message]).to eq "Test failed."
|
93
|
+
expect(subject[:message].call).to eq "Test failed."
|
94
94
|
end
|
95
95
|
|
96
96
|
end
|
@@ -1,6 +1,29 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
module PreGitConfig
|
4
|
+
def configure(plugins_dir: [])
|
5
|
+
subject.configure do |config|
|
6
|
+
config.headline_on_success = "Success!"
|
7
|
+
config.headline_on_failure = "Failure!"
|
8
|
+
config.project_dir = File.dirname(__FILE__)
|
9
|
+
config.plugins_dir = plugins_dir
|
10
|
+
config.suppress_headline = true
|
11
|
+
config.context = "pre-commit"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
3
16
|
describe CaptainHoog::PreGit do
|
17
|
+
include PreGitConfig
|
18
|
+
let(:plugins_path) do
|
19
|
+
[File.join(File.dirname(__FILE__),
|
20
|
+
"..",
|
21
|
+
"..",
|
22
|
+
"fixtures",
|
23
|
+
"plugins",
|
24
|
+
"test_plugins",
|
25
|
+
"passing")]
|
26
|
+
end
|
4
27
|
|
5
28
|
describe "class methods" do
|
6
29
|
|
@@ -30,26 +53,17 @@ describe CaptainHoog::PreGit do
|
|
30
53
|
expect(subject).to respond_to(:configure)
|
31
54
|
end
|
32
55
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
"..",
|
37
|
-
"..",
|
38
|
-
"fixtures",
|
39
|
-
"plugins",
|
40
|
-
"test_plugins",
|
41
|
-
"passing",
|
42
|
-
"pure")]
|
43
|
-
end
|
56
|
+
it "provides #context getter" do
|
57
|
+
expect(subject).to respond_to(:context)
|
58
|
+
end
|
44
59
|
|
60
|
+
it "provides #context setter" do
|
61
|
+
expect(subject).to respond_to(:context=)
|
62
|
+
end
|
63
|
+
|
64
|
+
describe "#configure" do
|
45
65
|
before do
|
46
|
-
|
47
|
-
config.headline_on_success = "Success!"
|
48
|
-
config.headline_on_failure = "Failure!"
|
49
|
-
config.project_dir = File.dirname(__FILE__)
|
50
|
-
config.plugins_dir = plugins_path
|
51
|
-
config.suppress_headline = true
|
52
|
-
end
|
66
|
+
configure(plugins_dir: plugins_path)
|
53
67
|
end
|
54
68
|
|
55
69
|
it "let you define the success headline message" do
|
@@ -65,7 +79,7 @@ describe CaptainHoog::PreGit do
|
|
65
79
|
end
|
66
80
|
|
67
81
|
it "let you define the plugins dir" do
|
68
|
-
expect(CaptainHoog::PreGit.plugins_dir).to eq plugins_path
|
82
|
+
expect(CaptainHoog::PreGit.plugins_dir.last).to eq plugins_path.first
|
69
83
|
end
|
70
84
|
|
71
85
|
end
|
@@ -90,6 +104,9 @@ describe CaptainHoog::PreGit do
|
|
90
104
|
end
|
91
105
|
|
92
106
|
it 'affects only configured plugins' do
|
107
|
+
allow(CaptainHoog).to receive(:treasury_path)
|
108
|
+
.and_return(plugins_path.first)
|
109
|
+
configure
|
93
110
|
pre_git = CaptainHoog::PreGit.run(plugins_list:plugins_list)
|
94
111
|
expect(pre_git.instance_variable_get(:@results).size).to eq 1
|
95
112
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: captain_hoog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Schmidt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-05-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -64,6 +64,20 @@ dependencies:
|
|
64
64
|
- - "~>"
|
65
65
|
- !ruby/object:Gem::Version
|
66
66
|
version: 1.4.5
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: git
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - "~>"
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 1.2.9.1
|
74
|
+
type: :runtime
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 1.2.9.1
|
67
81
|
- !ruby/object:Gem::Dependency
|
68
82
|
name: bundler
|
69
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +136,20 @@ dependencies:
|
|
122
136
|
version: '0'
|
123
137
|
- !ruby/object:Gem::Dependency
|
124
138
|
name: aruba
|
139
|
+
requirement: !ruby/object:Gem::Requirement
|
140
|
+
requirements:
|
141
|
+
- - '='
|
142
|
+
- !ruby/object:Gem::Version
|
143
|
+
version: 0.6.1
|
144
|
+
type: :development
|
145
|
+
prerelease: false
|
146
|
+
version_requirements: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - '='
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: 0.6.1
|
151
|
+
- !ruby/object:Gem::Dependency
|
152
|
+
name: minitest
|
125
153
|
requirement: !ruby/object:Gem::Requirement
|
126
154
|
requirements:
|
127
155
|
- - ">="
|
@@ -135,7 +163,7 @@ dependencies:
|
|
135
163
|
- !ruby/object:Gem::Version
|
136
164
|
version: '0'
|
137
165
|
- !ruby/object:Gem::Dependency
|
138
|
-
name:
|
166
|
+
name: pry
|
139
167
|
requirement: !ruby/object:Gem::Requirement
|
140
168
|
requirements:
|
141
169
|
- - ">="
|
@@ -152,7 +180,7 @@ description:
|
|
152
180
|
email:
|
153
181
|
- daniel.schmidt@gateprotect.com
|
154
182
|
executables:
|
155
|
-
-
|
183
|
+
- hoog
|
156
184
|
extensions: []
|
157
185
|
extra_rdoc_files: []
|
158
186
|
files:
|
@@ -162,13 +190,15 @@ files:
|
|
162
190
|
- LICENSE.txt
|
163
191
|
- README.md
|
164
192
|
- Rakefile
|
165
|
-
- bin/
|
193
|
+
- bin/hoog
|
166
194
|
- captain_hoog.gemspec
|
167
195
|
- changelog.md
|
168
196
|
- features/failed_hook.feature
|
197
|
+
- features/init.feature
|
169
198
|
- features/installing_hook.feature
|
170
199
|
- features/moving_hooks.feature
|
171
200
|
- features/passed_hook.feature
|
201
|
+
- features/pull.feature
|
172
202
|
- features/removing_hook.feature
|
173
203
|
- features/support/env.rb
|
174
204
|
- features/support/steps/hooks_steps.rb
|
@@ -176,23 +206,28 @@ files:
|
|
176
206
|
- features/testing.feature
|
177
207
|
- features/version.feature
|
178
208
|
- lib/captain_hoog.rb
|
209
|
+
- lib/captain_hoog/cli.rb
|
210
|
+
- lib/captain_hoog/cli/git.rb
|
211
|
+
- lib/captain_hoog/cli/hoog.rb
|
212
|
+
- lib/captain_hoog/cli/pull.rb
|
213
|
+
- lib/captain_hoog/cli/templates/hoogfile.erb
|
214
|
+
- lib/captain_hoog/cli/templates/install.erb
|
215
|
+
- lib/captain_hoog/cli/treasury.rb
|
179
216
|
- lib/captain_hoog/config/hook_types.yml
|
180
217
|
- lib/captain_hoog/core_ext.rb
|
181
218
|
- lib/captain_hoog/core_ext/hash.rb
|
182
219
|
- lib/captain_hoog/delegatable.rb
|
183
220
|
- lib/captain_hoog/dependencies.rb
|
184
221
|
- lib/captain_hoog/env.rb
|
185
|
-
- lib/captain_hoog/errors.rb
|
186
222
|
- lib/captain_hoog/errors/dsl_errors.rb
|
187
223
|
- lib/captain_hoog/git.rb
|
188
224
|
- lib/captain_hoog/helper_table.rb
|
189
225
|
- lib/captain_hoog/hoogfile.rb
|
226
|
+
- lib/captain_hoog/message.rb
|
190
227
|
- lib/captain_hoog/plugin.rb
|
191
228
|
- lib/captain_hoog/plugin_list.rb
|
192
229
|
- lib/captain_hoog/pre_git.rb
|
193
230
|
- lib/captain_hoog/struct/hoog_struct.rb
|
194
|
-
- lib/captain_hoog/templates/hoogfile.erb
|
195
|
-
- lib/captain_hoog/templates/install.erb
|
196
231
|
- lib/captain_hoog/test.rb
|
197
232
|
- lib/captain_hoog/test/all.rb
|
198
233
|
- lib/captain_hoog/test/rspec.rb
|
@@ -202,6 +237,20 @@ files:
|
|
202
237
|
- spec/fixtures/code/helper.rb
|
203
238
|
- spec/fixtures/config/cucumber/hoogfile.yml
|
204
239
|
- spec/fixtures/config/spec/hoogfile.yml
|
240
|
+
- spec/fixtures/neverland.git/HEAD
|
241
|
+
- spec/fixtures/neverland.git/config
|
242
|
+
- spec/fixtures/neverland.git/description
|
243
|
+
- spec/fixtures/neverland.git/hooks/applypatch-msg.sample
|
244
|
+
- spec/fixtures/neverland.git/hooks/commit-msg.sample
|
245
|
+
- spec/fixtures/neverland.git/hooks/post-update.sample
|
246
|
+
- spec/fixtures/neverland.git/hooks/pre-applypatch.sample
|
247
|
+
- spec/fixtures/neverland.git/hooks/pre-commit.sample
|
248
|
+
- spec/fixtures/neverland.git/hooks/pre-push.sample
|
249
|
+
- spec/fixtures/neverland.git/hooks/pre-rebase.sample
|
250
|
+
- spec/fixtures/neverland.git/hooks/pre-receive.sample
|
251
|
+
- spec/fixtures/neverland.git/hooks/prepare-commit-msg.sample
|
252
|
+
- spec/fixtures/neverland.git/hooks/update.sample
|
253
|
+
- spec/fixtures/neverland.git/info/exclude
|
205
254
|
- spec/fixtures/plugins/shared/passing/simple_shared.rb
|
206
255
|
- spec/fixtures/plugins/test_plugins/divide.rb
|
207
256
|
- spec/fixtures/plugins/test_plugins/failing/simple.rb
|
@@ -224,7 +273,7 @@ licenses:
|
|
224
273
|
- MIT
|
225
274
|
metadata: {}
|
226
275
|
post_install_message: "\n Thanks for installing the Pre-Git whatever hooker!\n\n
|
227
|
-
\ If you don't have already, please install the hook:\n\n
|
276
|
+
\ If you don't have already, please install the hook:\n\n hoog install --type
|
228
277
|
<GIT_HOOK_TYPE> --plugins_dir <PATH_TO_PLUGINS> --project_dir <PATH_TO_PROJECT>\n
|
229
278
|
\ "
|
230
279
|
rdoc_options: []
|
@@ -242,15 +291,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
242
291
|
version: '0'
|
243
292
|
requirements: []
|
244
293
|
rubyforge_project:
|
245
|
-
rubygems_version: 2.
|
294
|
+
rubygems_version: 2.5.1
|
246
295
|
signing_key:
|
247
296
|
specification_version: 4
|
248
297
|
summary: Plugin based git-pre hook.
|
249
298
|
test_files:
|
250
299
|
- features/failed_hook.feature
|
300
|
+
- features/init.feature
|
251
301
|
- features/installing_hook.feature
|
252
302
|
- features/moving_hooks.feature
|
253
303
|
- features/passed_hook.feature
|
304
|
+
- features/pull.feature
|
254
305
|
- features/removing_hook.feature
|
255
306
|
- features/support/env.rb
|
256
307
|
- features/support/steps/hooks_steps.rb
|
@@ -260,6 +311,20 @@ test_files:
|
|
260
311
|
- spec/fixtures/code/helper.rb
|
261
312
|
- spec/fixtures/config/cucumber/hoogfile.yml
|
262
313
|
- spec/fixtures/config/spec/hoogfile.yml
|
314
|
+
- spec/fixtures/neverland.git/HEAD
|
315
|
+
- spec/fixtures/neverland.git/config
|
316
|
+
- spec/fixtures/neverland.git/description
|
317
|
+
- spec/fixtures/neverland.git/hooks/applypatch-msg.sample
|
318
|
+
- spec/fixtures/neverland.git/hooks/commit-msg.sample
|
319
|
+
- spec/fixtures/neverland.git/hooks/post-update.sample
|
320
|
+
- spec/fixtures/neverland.git/hooks/pre-applypatch.sample
|
321
|
+
- spec/fixtures/neverland.git/hooks/pre-commit.sample
|
322
|
+
- spec/fixtures/neverland.git/hooks/pre-push.sample
|
323
|
+
- spec/fixtures/neverland.git/hooks/pre-rebase.sample
|
324
|
+
- spec/fixtures/neverland.git/hooks/pre-receive.sample
|
325
|
+
- spec/fixtures/neverland.git/hooks/prepare-commit-msg.sample
|
326
|
+
- spec/fixtures/neverland.git/hooks/update.sample
|
327
|
+
- spec/fixtures/neverland.git/info/exclude
|
263
328
|
- spec/fixtures/plugins/shared/passing/simple_shared.rb
|
264
329
|
- spec/fixtures/plugins/test_plugins/divide.rb
|
265
330
|
- spec/fixtures/plugins/test_plugins/failing/simple.rb
|
@@ -277,4 +342,3 @@ test_files:
|
|
277
342
|
- spec/lib/captain_hoog/test/sandbox_spec.rb
|
278
343
|
- spec/spec_helper.rb
|
279
344
|
- spec/support/matchers/be_subclass_of.rb
|
280
|
-
has_rdoc:
|
data/bin/githoog
DELETED
@@ -1,118 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'thor'
|
4
|
-
require 'colorize'
|
5
|
-
require 'pathname'
|
6
|
-
|
7
|
-
class GitHookInstall < Thor
|
8
|
-
include Thor::Actions
|
9
|
-
|
10
|
-
def self.exit_on_failure?
|
11
|
-
true
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.source_root
|
15
|
-
File.join(File.dirname(__FILE__),"..", "lib", "captain_hoog", "templates")
|
16
|
-
end
|
17
|
-
|
18
|
-
class_option :type, type: :string, default: 'pre-commit'
|
19
|
-
class_option :project_dir, type: :string, default: Dir.getwd
|
20
|
-
class_option :plugins_dir, type: :string, default: Dir.getwd
|
21
|
-
|
22
|
-
map %w[--version -v] => :__print_version
|
23
|
-
|
24
|
-
desc "install","Installs the hook into your Git repository"
|
25
|
-
def install(*args)
|
26
|
-
check_if_git_present
|
27
|
-
check_if_option_present("plugins_dir")
|
28
|
-
# deprecated:
|
29
|
-
# "#{options[:plugins_dir]}/#{options[:type]}"
|
30
|
-
install_hook({ as: options[:type],
|
31
|
-
context: {
|
32
|
-
root_dir: Dir.getwd,
|
33
|
-
plugins_dir: options[:plugins_dir],
|
34
|
-
project_dir: options[:project_dir]
|
35
|
-
}
|
36
|
-
})
|
37
|
-
puts "Installed hook as #{options[:type]} hook".green
|
38
|
-
end
|
39
|
-
|
40
|
-
desc "remove", "Removes a hook from your Git repository"
|
41
|
-
def remove(*args)
|
42
|
-
check_if_git_present
|
43
|
-
remove_hook(as: options[:type])
|
44
|
-
puts "The #{options[:type]} hook is removed.".green
|
45
|
-
end
|
46
|
-
|
47
|
-
option :from, type: :string, required: true
|
48
|
-
option :to, type: :string, required: true
|
49
|
-
desc "move", "Moves a hook from type to another"
|
50
|
-
def move(*args)
|
51
|
-
check_if_git_present
|
52
|
-
if options[:from] == options[:to]
|
53
|
-
puts "--from and --to arguments are the same".red
|
54
|
-
raise Thor::Error
|
55
|
-
else
|
56
|
-
move_hook(options)
|
57
|
-
puts "The #{options[:from]} hook is moved to #{options[:to]} hook.".green
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
desc "version, -v", "Prints out the version"
|
62
|
-
def __print_version
|
63
|
-
puts CaptainHoog::VERSION
|
64
|
-
end
|
65
|
-
|
66
|
-
private
|
67
|
-
|
68
|
-
def is_git_repository?
|
69
|
-
File.exists?(File.join(Dir.getwd, ".git"))
|
70
|
-
end
|
71
|
-
|
72
|
-
def install_hook(config)
|
73
|
-
opts = config[:context]
|
74
|
-
opts[:type] = config[:as]
|
75
|
-
copy_config_file(opts)
|
76
|
-
template("install.erb",File.join(hooks_dir, config[:as]), opts)
|
77
|
-
FileUtils.chmod(0755,File.join(hooks_dir, config[:as]))
|
78
|
-
end
|
79
|
-
|
80
|
-
def remove_hook(config)
|
81
|
-
FileUtils.rm_rf(File.join(hooks_dir, config[:as]))
|
82
|
-
end
|
83
|
-
|
84
|
-
def move_hook(config)
|
85
|
-
from = File.join(hooks_dir, config[:from])
|
86
|
-
to = File.join(hooks_dir, config[:to])
|
87
|
-
FileUtils.mv(from, to)
|
88
|
-
end
|
89
|
-
|
90
|
-
def hooks_dir
|
91
|
-
git_dir.join(".git", "hooks")
|
92
|
-
end
|
93
|
-
|
94
|
-
def git_dir
|
95
|
-
Pathname.new(Dir.getwd)
|
96
|
-
end
|
97
|
-
|
98
|
-
def check_if_git_present
|
99
|
-
if not is_git_repository?
|
100
|
-
puts "I can't detect a Git repository".red
|
101
|
-
raise Thor::Error
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def check_if_option_present(type)
|
106
|
-
unless options.has_key?(type)
|
107
|
-
puts "No value provided for required options '--#{type}'".red
|
108
|
-
raise Thor::Error
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
def copy_config_file(opts={})
|
113
|
-
template('hoogfile.erb', git_dir.join('hoogfile.yml'), opts)
|
114
|
-
end
|
115
|
-
|
116
|
-
end
|
117
|
-
|
118
|
-
GitHookInstall.start(ARGV)
|