guard-puppet 0.0.1 → 0.0.2
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/README.md +3 -2
- data/lib/guard/puppet.rb +2 -0
- data/lib/guard/puppet/log.rb +24 -0
- data/lib/guard/puppet/runner.rb +32 -4
- data/lib/guard/puppet/version.rb +1 -1
- data/spec/lib/guard/puppet/log_spec.rb +30 -0
- data/spec/lib/guard/puppet/runner_spec.rb +32 -3
- metadata +5 -2
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Reapply your Puppet configs automatically using Guard! Awesome!
|
2
2
|
|
3
3
|
``` ruby
|
4
|
-
guard 'puppet'
|
4
|
+
guard 'puppet' do
|
5
5
|
watch(%r{^(manifests|modules)})
|
6
6
|
end
|
7
7
|
```
|
@@ -10,9 +10,10 @@ It's assumed your configs are all in the current folder, which is the
|
|
10
10
|
equivalent of `--confdir=$PWD` at the command line. Otherwise,
|
11
11
|
there's not much use of using Guard with Puppet. :)
|
12
12
|
|
13
|
-
|
13
|
+
Three options so far:
|
14
14
|
|
15
15
|
* `:verbose`: Show more output from Puppet (default: `true`)
|
16
|
+
* `:debug`: Show even more output from Puppet (default: `false`)
|
16
17
|
* `:manifest`: The main manifest file to run (default: `manifests/site.pp`)
|
17
18
|
|
18
19
|
Bugs and fixes? You know the drill.
|
data/lib/guard/puppet.rb
CHANGED
@@ -0,0 +1,24 @@
|
|
1
|
+
module Puppet; end
|
2
|
+
|
3
|
+
require 'puppet/util'
|
4
|
+
require 'puppet/util/log'
|
5
|
+
|
6
|
+
::Puppet::Util::Log.newdesttype :guard do
|
7
|
+
attr_reader :messages
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
close
|
11
|
+
end
|
12
|
+
|
13
|
+
def handle(msg)
|
14
|
+
@messages << msg
|
15
|
+
end
|
16
|
+
|
17
|
+
def close
|
18
|
+
@messages = []
|
19
|
+
end
|
20
|
+
|
21
|
+
def has_failed?
|
22
|
+
messages.find { |msg| (::Puppet::Util::Log.levels.index(msg.level)) >= 4 }
|
23
|
+
end
|
24
|
+
end
|
data/lib/guard/puppet/runner.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'guard/puppet'
|
2
2
|
require 'puppet/util/command_line'
|
3
3
|
require 'puppet/application/apply'
|
4
|
+
require 'guard/puppet/log'
|
4
5
|
|
5
6
|
module Guard
|
6
7
|
class Puppet
|
@@ -12,21 +13,48 @@ module Guard
|
|
12
13
|
:verbose => true,
|
13
14
|
:manifest => 'manifests/site.pp'
|
14
15
|
}.merge(options)
|
16
|
+
|
15
17
|
end
|
16
18
|
|
17
19
|
def run
|
18
|
-
::Puppet::Util::
|
19
|
-
|
20
|
-
|
21
|
-
|
20
|
+
messages = ::Puppet::Util::Log.newdestination(:guard)
|
21
|
+
|
22
|
+
begin
|
23
|
+
maybe_bundle_with_env do
|
24
|
+
::Puppet::Util::CommandLine.new('puppet', command_line_params).execute
|
25
|
+
end
|
26
|
+
0
|
27
|
+
rescue SystemExit => e
|
28
|
+
if e.status == 0
|
29
|
+
if messages.has_failed?
|
30
|
+
1
|
31
|
+
else
|
32
|
+
0
|
33
|
+
end
|
34
|
+
else
|
35
|
+
e.status
|
36
|
+
end
|
37
|
+
ensure
|
38
|
+
::Puppet::Util::Log.close(:guard)
|
39
|
+
end
|
22
40
|
end
|
23
41
|
|
24
42
|
def command_line_params
|
25
43
|
command = [ "apply", %{--confdir="#{Dir.pwd}"} ]
|
26
44
|
command << "-v" if @options[:verbose]
|
45
|
+
command << "-d" if @options[:debug]
|
27
46
|
command << @options[:manifest] if @options[:manifest]
|
28
47
|
command
|
29
48
|
end
|
49
|
+
|
50
|
+
private
|
51
|
+
def maybe_bundle_with_env(&block)
|
52
|
+
if defined?(::Bundler)
|
53
|
+
Bundler.with_clean_env(&block)
|
54
|
+
else
|
55
|
+
yield
|
56
|
+
end
|
57
|
+
end
|
30
58
|
end
|
31
59
|
end
|
32
60
|
end
|
data/lib/guard/puppet/version.rb
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'guard/puppet/log'
|
3
|
+
require 'puppet/util/log'
|
4
|
+
|
5
|
+
describe 'guard logging for puppet' do
|
6
|
+
let(:guard) { ::Puppet::Util::Log.destinations[:guard] }
|
7
|
+
|
8
|
+
before do
|
9
|
+
::Puppet::Util::Log.newdestination(:guard)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should receive a message' do
|
13
|
+
guard.handle("test")
|
14
|
+
guard.messages.should == [ "test" ]
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should not be a failure' do
|
18
|
+
guard.handle(stub(:level => :info))
|
19
|
+
guard.should_not have_failed
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should be a failure' do
|
23
|
+
guard.handle(stub(:level => :err))
|
24
|
+
guard.should have_failed
|
25
|
+
end
|
26
|
+
|
27
|
+
after do
|
28
|
+
::Puppet::Util::Log.close(:guard)
|
29
|
+
end
|
30
|
+
end
|
@@ -23,13 +23,42 @@ describe Guard::Puppet::Runner do
|
|
23
23
|
|
24
24
|
it { should == [ 'apply', %{--confdir="#{Dir.pwd}"}, '-v', '123' ] }
|
25
25
|
end
|
26
|
+
|
27
|
+
context 'debug' do
|
28
|
+
let(:options) { { :debug => true} }
|
29
|
+
|
30
|
+
it { should == [ 'apply', %{--confdir="#{Dir.pwd}"}, '-v', '-d', 'manifests/site.pp' ] }
|
31
|
+
end
|
26
32
|
end
|
27
33
|
|
28
34
|
describe '#run' do
|
29
|
-
|
30
|
-
::Puppet::Util::CommandLine.expects(:new).raises(SystemExit.new(
|
35
|
+
before do
|
36
|
+
::Puppet::Util::CommandLine.expects(:new).raises(SystemExit.new(return_value))
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'returns a non-zero value' do
|
40
|
+
let(:return_value) { 10 }
|
41
|
+
|
42
|
+
it 'should return the result of an exit call' do
|
43
|
+
runner.run.should == return_value
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'returns a zero value' do
|
48
|
+
let(:return_value) { 0 }
|
49
|
+
let(:messages) do
|
50
|
+
messages = stub
|
51
|
+
messages.stubs(:has_failed?).returns(true)
|
52
|
+
messages
|
53
|
+
end
|
54
|
+
|
55
|
+
before do
|
56
|
+
Puppet::Util::Log.stubs(:newdestination).returns(messages)
|
57
|
+
end
|
31
58
|
|
32
|
-
|
59
|
+
it 'should check the status of the messages output' do
|
60
|
+
runner.run.should == 1
|
61
|
+
end
|
33
62
|
end
|
34
63
|
end
|
35
64
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: guard-puppet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.2
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- John Bintz
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-07-
|
13
|
+
date: 2011-07-06 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -74,9 +74,11 @@ files:
|
|
74
74
|
- Rakefile
|
75
75
|
- guard-puppet.gemspec
|
76
76
|
- lib/guard/puppet.rb
|
77
|
+
- lib/guard/puppet/log.rb
|
77
78
|
- lib/guard/puppet/runner.rb
|
78
79
|
- lib/guard/puppet/templates/Guardfile
|
79
80
|
- lib/guard/puppet/version.rb
|
81
|
+
- spec/lib/guard/puppet/log_spec.rb
|
80
82
|
- spec/lib/guard/puppet/runner_spec.rb
|
81
83
|
- spec/lib/guard/puppet_spec.rb
|
82
84
|
- spec/spec_helper.rb
|
@@ -109,6 +111,7 @@ signing_key:
|
|
109
111
|
specification_version: 3
|
110
112
|
summary: Reapply Puppet configs automatically using Guard.
|
111
113
|
test_files:
|
114
|
+
- spec/lib/guard/puppet/log_spec.rb
|
112
115
|
- spec/lib/guard/puppet/runner_spec.rb
|
113
116
|
- spec/lib/guard/puppet_spec.rb
|
114
117
|
- spec/spec_helper.rb
|