guard-chef 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.rdoc +1 -1
- data/lib/guard/chef.rb +77 -0
- data/lib/guard/chef/cookbook_job.rb +3 -2
- data/lib/guard/chef/data_bag_job.rb +3 -2
- data/lib/guard/chef/role_job.rb +3 -2
- data/lib/guard/chef/templates/Guardfile +5 -0
- data/lib/guard/chef/version.rb +1 -1
- data/lib/tasks/dummy.rake +13 -0
- metadata +6 -3
data/README.rdoc
CHANGED
data/lib/guard/chef.rb
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'guard'
|
2
|
+
require 'guard/guard'
|
3
|
+
require 'active_support/inflector'
|
4
|
+
|
5
|
+
Dir[File.expand_path('../chef/*_job.rb', __FILE__)].each {|f| require f}
|
6
|
+
|
7
|
+
module Guard
|
8
|
+
class Chef < Guard
|
9
|
+
def initialize(watchers=[], options={})
|
10
|
+
super
|
11
|
+
@base_dir = ::File.expand_path('../../../', __FILE__)
|
12
|
+
# init stuff here, thx!
|
13
|
+
end
|
14
|
+
|
15
|
+
# =================
|
16
|
+
# = Guard methods =
|
17
|
+
# =================
|
18
|
+
|
19
|
+
# If one of those methods raise an exception, the Guard::GuardName instance
|
20
|
+
# will be removed from the active guards.
|
21
|
+
|
22
|
+
# Called once when Guard starts
|
23
|
+
# Please override initialize method to init stuff
|
24
|
+
def start
|
25
|
+
true
|
26
|
+
end
|
27
|
+
|
28
|
+
# Called on Ctrl-C signal (when Guard quits)
|
29
|
+
def stop
|
30
|
+
true
|
31
|
+
end
|
32
|
+
|
33
|
+
# Called on Ctrl-Z signal
|
34
|
+
# This method should be mainly used for "reload" (really!) actions like reloading passenger/spork/bundler/...
|
35
|
+
def reload
|
36
|
+
true
|
37
|
+
end
|
38
|
+
|
39
|
+
# Called on Ctrl-/ signal
|
40
|
+
# This method should be principally used for long action like running all specs/tests/...
|
41
|
+
def run_all
|
42
|
+
true
|
43
|
+
end
|
44
|
+
|
45
|
+
# Called on file(s) modifications
|
46
|
+
def run_on_change(paths)
|
47
|
+
paths.each do |path|
|
48
|
+
unless updated?(path)
|
49
|
+
return false
|
50
|
+
end
|
51
|
+
end
|
52
|
+
true
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def updated?(path)
|
58
|
+
target = perform(path)
|
59
|
+
unless target.nil?
|
60
|
+
target.update
|
61
|
+
return true
|
62
|
+
end
|
63
|
+
false
|
64
|
+
end
|
65
|
+
|
66
|
+
def perform(path)
|
67
|
+
begin
|
68
|
+
matches = path.split("/")
|
69
|
+
type, target = "#{matches[0].classify}Job", matches[1]
|
70
|
+
type.constantize.new(@base_dir, target.gsub(".rb", ''))
|
71
|
+
rescue Exception
|
72
|
+
puts "#{type.classify} is not a valid watch type"
|
73
|
+
nil
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -13,11 +13,12 @@ class CookbookJob
|
|
13
13
|
|
14
14
|
def update
|
15
15
|
puts "uploading changed cookbook. (#{target}) Please wait."
|
16
|
-
|
17
|
-
if /upload complete/ =~ retval
|
16
|
+
if /upload complete/ =~ `#{base_cmd} && rake upload_cookbook[#{target}]`
|
18
17
|
puts "cookbook (#{target}) uploaded."
|
18
|
+
true
|
19
19
|
else
|
20
20
|
puts "cookbook (#{target}) could not be uploaded."
|
21
|
+
false
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
@@ -13,11 +13,12 @@ class DataBagJob
|
|
13
13
|
|
14
14
|
def update
|
15
15
|
puts "uploading changed databag. (#{target}) Please wait."
|
16
|
-
|
17
|
-
if /Updated data_bag_item/ =~ retval
|
16
|
+
if /Updated data_bag_item/ =~ `#{base_cmd} && rake databag:upload[#{target}]`
|
18
17
|
puts "databag (#{target}) uploaded."
|
18
|
+
true
|
19
19
|
else
|
20
20
|
puts "databag (#{target}) could not be uploaded."
|
21
|
+
false
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
data/lib/guard/chef/role_job.rb
CHANGED
@@ -13,11 +13,12 @@ class RoleJob
|
|
13
13
|
|
14
14
|
def update
|
15
15
|
puts "uploading changed role. (#{target}) Please wait."
|
16
|
-
|
17
|
-
if /Updated Role #{target}!/ =~ retval
|
16
|
+
if /Updated Role #{target}!/ =~ `#{base_cmd} && rake role[#{target}]`
|
18
17
|
puts "role (#{target}) uploaded."
|
18
|
+
true
|
19
19
|
else
|
20
20
|
puts "role (#{target}) could not be uploaded."
|
21
|
+
false
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
data/lib/guard/chef/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: guard-chef
|
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
|
- Dreamr OKelly
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-12 00:00:00 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: guard
|
@@ -58,7 +58,10 @@ files:
|
|
58
58
|
- lib/guard/chef/cookbook_job.rb
|
59
59
|
- lib/guard/chef/data_bag_job.rb
|
60
60
|
- lib/guard/chef/role_job.rb
|
61
|
+
- lib/guard/chef/templates/Guardfile
|
61
62
|
- lib/guard/chef/version.rb
|
63
|
+
- lib/guard/chef.rb
|
64
|
+
- lib/tasks/dummy.rake
|
62
65
|
- LICENSE
|
63
66
|
- README.rdoc
|
64
67
|
homepage: http://rubygems.org/gems/guard-chef
|
@@ -85,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
88
|
version: 1.3.6
|
86
89
|
requirements: []
|
87
90
|
|
88
|
-
rubyforge_project:
|
91
|
+
rubyforge_project:
|
89
92
|
rubygems_version: 1.7.2
|
90
93
|
signing_key:
|
91
94
|
specification_version: 3
|