knife-spork 0.1.9 → 0.1.10
Sign up to get free protection for your applications and to get access to all the features.
- data/knife-spork.gemspec +3 -3
- data/lib/chef/knife/spork-bump.rb +58 -61
- data/lib/chef/knife/spork-check.rb +6 -7
- data/lib/chef/knife/spork-promote.rb +34 -36
- data/lib/chef/knife/spork-upload.rb +21 -24
- data/lib/knife-spork.rb +1 -1
- metadata +5 -5
data/knife-spork.gemspec
CHANGED
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
|
|
13
13
|
## If your rubyforge_project name is different, then edit it and comment out
|
14
14
|
## the sub! line in the Rakefile
|
15
15
|
s.name = 'knife-spork'
|
16
|
-
s.version = '0.1.
|
17
|
-
s.date = '2012-04-
|
16
|
+
s.version = '0.1.10'
|
17
|
+
s.date = '2012-04-12'
|
18
18
|
s.rubyforge_project = 'knife-spork'
|
19
19
|
|
20
20
|
## Make sure your summary is short. The description may be as long
|
@@ -42,7 +42,7 @@ Gem::Specification.new do |s|
|
|
42
42
|
## that are needed for an end user to actually USE your code.
|
43
43
|
s.add_dependency('chef', [">= 0.10.4"])
|
44
44
|
s.add_dependency('git', [">= 1.2.5"])
|
45
|
-
s.add_dependency('app_conf', [">= 0.
|
45
|
+
s.add_dependency('app_conf', [">= 0.4.0"])
|
46
46
|
|
47
47
|
## Leave this section as-is. It will be automatically generated from the
|
48
48
|
## contents of your Git repository via the gemspec task. DO NOT REMOVE
|
@@ -36,26 +36,26 @@ module KnifeSpork
|
|
36
36
|
|
37
37
|
self.config = Chef::Config.merge!(config)
|
38
38
|
|
39
|
+
@conf = AppConf.new
|
40
|
+
|
39
41
|
if File.exists?("#{config[:cookbook_path].first.gsub("cookbooks","")}config/spork-config.yml")
|
40
|
-
|
42
|
+
@conf.load("#{config[:cookbook_path].first.gsub("cookbooks","")}config/spork-config.yml")
|
41
43
|
ui.msg "Loaded config file #{config[:cookbook_path].first.gsub("cookbooks","")}config/spork-config.yml...\n\n"
|
42
44
|
end
|
43
45
|
|
44
46
|
if File.exists?("/etc/spork-config.yml")
|
45
|
-
|
47
|
+
@conf.load("/etc/spork-config.yml")
|
46
48
|
ui.msg "Loaded config file /etc/spork-config.yml...\n\n"
|
47
49
|
end
|
48
50
|
|
49
51
|
if File.exists?(File.expand_path("~/.chef/spork-config.yml"))
|
50
|
-
|
52
|
+
@conf.load(File.expand_path("~/.chef/spork-config.yml"))
|
51
53
|
ui.msg "Loaded config file #{File.expand_path("~/.chef/spork-config.yml")}...\n\n"
|
52
54
|
end
|
53
55
|
|
54
56
|
bump_type=""
|
55
57
|
|
56
|
-
if config.has_key?(:cookbook_path)
|
57
|
-
cookbook_path = config["cookbook_path"]
|
58
|
-
else
|
58
|
+
if !config.has_key?(:cookbook_path)
|
59
59
|
ui.fatal "No default cookbook_path; Specify with -o or fix your knife.rb."
|
60
60
|
show_usage
|
61
61
|
exit 1
|
@@ -84,26 +84,25 @@ module KnifeSpork
|
|
84
84
|
exit 1
|
85
85
|
end
|
86
86
|
|
87
|
-
|
87
|
+
cookbook = name_args.first
|
88
|
+
cookbook_path = cookbook_repo[cookbook].root_dir.gsub("#{cookbook}","")
|
89
|
+
|
90
|
+
if !@conf.git.nil? && @conf.git.enabled
|
88
91
|
if !@@gitavail
|
89
92
|
ui.msg "Git gem not available, skipping git pull.\n\n"
|
90
93
|
else
|
91
|
-
git_pull_if_repo
|
94
|
+
git_pull_if_repo([cookbook_path])
|
92
95
|
end
|
93
96
|
end
|
94
97
|
|
95
98
|
if bump_type == "manual"
|
96
99
|
manual_version = name_args.last
|
97
|
-
cookbook = name_args.first
|
98
|
-
cookbook_path = Array(config[:cookbook_path]).first
|
99
100
|
patch_manual(cookbook_path, cookbook, manual_version)
|
100
101
|
else
|
101
|
-
cookbook = name_args.first
|
102
|
-
cookbook_path = Array(config[:cookbook_path]).first
|
103
102
|
patch(cookbook_path, cookbook, bump_type)
|
104
103
|
end
|
105
104
|
|
106
|
-
if
|
105
|
+
if !@conf.git.nil? && @conf.git.enabled
|
107
106
|
if !@@gitavail
|
108
107
|
ui.msg "Git gem not available, skipping git add.\n\n"
|
109
108
|
else
|
@@ -112,6 +111,13 @@ module KnifeSpork
|
|
112
111
|
end
|
113
112
|
end
|
114
113
|
|
114
|
+
def cookbook_repo
|
115
|
+
@cookbook_loader ||= begin
|
116
|
+
Chef::Cookbook::FileVendor.on_create { |manifest| Chef::Cookbook::FileSystemFileVendor.new(manifest, config[:cookbook_path]) }
|
117
|
+
Chef::CookbookLoader.new(config[:cookbook_path])
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
115
121
|
def patch(cookbook_path, cookbook, type)
|
116
122
|
t = TYPE_INDEX[type]
|
117
123
|
current_version = get_version(cookbook_path, cookbook).split(".").map{|i| i.to_i}
|
@@ -164,60 +170,51 @@ module KnifeSpork
|
|
164
170
|
def git_add(cookbook)
|
165
171
|
strio = StringIO.new
|
166
172
|
l = Logger.new strio
|
167
|
-
cookbook_path =
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
rescue
|
180
|
-
ui.warn "Git: Cookbook bump succeeded, but something went wrong with git add metadata.rb, so you'll want to manually git add it. Dumping log info..."
|
181
|
-
ui.warn "#{strio.string}"
|
182
|
-
end
|
173
|
+
cookbook_path = cookbook_repo[cookbook].root_dir.gsub("#{cookbook}","")
|
174
|
+
begin
|
175
|
+
path = cookbook_path.gsub("/site-cookbooks","").gsub("/cookbooks","")
|
176
|
+
ui.msg "Opening git repo #{path}\n\n"
|
177
|
+
g = Git.open(path, :log => Logger.new(strio))
|
178
|
+
ui.msg "Git add'ing #{cookbook_path}#{cookbook}/metadata.rb\n\n"
|
179
|
+
g.add("#{cookbook_path}/#{cookbook}/metadata.rb")
|
180
|
+
rescue ArgumentError => e
|
181
|
+
ui.warn "Git: The root of your chef repo doesn't look like it's a git repo. Skipping git add...\n\n"
|
182
|
+
rescue
|
183
|
+
ui.warn "Git: Cookbook bump succeeded, but something went wrong with git add metadata.rb, so you'll want to manually git add it. Dumping log info..."
|
184
|
+
ui.warn "#{strio.string}"
|
183
185
|
end
|
184
186
|
end
|
185
187
|
|
186
|
-
def git_pull_if_repo
|
188
|
+
def git_pull_if_repo(cookbook_path)
|
187
189
|
strio = StringIO.new
|
188
190
|
l = Logger.new strio
|
189
|
-
|
190
|
-
|
191
|
-
ui.
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
ui.msg "#{output.read()}\n"
|
214
|
-
else
|
215
|
-
ui.error "#{output.read()}\n"
|
216
|
-
exit 1
|
217
|
-
end
|
218
|
-
rescue ArgumentError => e
|
219
|
-
ui.warn "Git: The root of your chef repo doesn't look like it's a git repo. Skipping git pull...\n\n"
|
191
|
+
begin
|
192
|
+
path = cookbook_path[0].gsub("/site-cookbooks","").gsub("/cookbooks","")
|
193
|
+
ui.msg "Opening git repo #{path}\n\n"
|
194
|
+
g = Git.open(path, :log => Logger.new(strio))
|
195
|
+
ui.msg "Pulling latest changes from git\n\n"
|
196
|
+
output = IO.popen ("cd #{path} && git pull 2>&1")
|
197
|
+
Process.wait
|
198
|
+
exit_code = $?
|
199
|
+
if exit_code.exitstatus == 0
|
200
|
+
ui.msg "#{output.read()}\n"
|
201
|
+
else
|
202
|
+
ui.error "#{output.read()}\n"
|
203
|
+
exit 1
|
204
|
+
end
|
205
|
+
|
206
|
+
ui.msg "Pulling latest changes from git submodules (if any)\n\n"
|
207
|
+
output = IO.popen ("cd #{path} && git submodule foreach git pull 2>&1")
|
208
|
+
Process.wait
|
209
|
+
exit_code = $?
|
210
|
+
if exit_code.exitstatus == 0
|
211
|
+
ui.msg "#{output.read()}\n"
|
212
|
+
else
|
213
|
+
ui.error "#{output.read()}\n"
|
214
|
+
exit 1
|
220
215
|
end
|
216
|
+
rescue ArgumentError => e
|
217
|
+
ui.warn "Git: #{cookbook_path.join} doesn't look like it's a git repo. Skipping git pull...\n\n"
|
221
218
|
end
|
222
219
|
end
|
223
220
|
end
|
@@ -32,19 +32,20 @@ module KnifeSpork
|
|
32
32
|
end
|
33
33
|
|
34
34
|
self.config = Chef::Config.merge!(config)
|
35
|
-
|
35
|
+
@conf = AppConf.new
|
36
|
+
|
36
37
|
if File.exists?("#{config[:cookbook_path].first.gsub("cookbooks","")}config/spork-config.yml")
|
37
|
-
|
38
|
+
@conf.load("#{config[:cookbook_path].first.gsub("cookbooks","")}config/spork-config.yml")
|
38
39
|
ui.msg "Loaded config file #{config[:cookbook_path].first.gsub("cookbooks","")}config/spork-config.yml...\n\n"
|
39
40
|
end
|
40
41
|
|
41
42
|
if File.exists?("/etc/spork-config.yml")
|
42
|
-
|
43
|
+
@conf.load("/etc/spork-config.yml")
|
43
44
|
ui.msg "Loaded config file /etc/spork-config.yml...\n\n"
|
44
45
|
end
|
45
46
|
|
46
47
|
if File.exists?(File.expand_path("~/.chef/spork-config.yml"))
|
47
|
-
|
48
|
+
@conf.load(File.expand_path("~/.chef/spork-config.yml"))
|
48
49
|
ui.msg "Loaded config file #{File.expand_path("~/.chef/spork-config.yml")}...\n\n"
|
49
50
|
end
|
50
51
|
|
@@ -68,15 +69,13 @@ module KnifeSpork
|
|
68
69
|
end
|
69
70
|
|
70
71
|
cookbook = name_args.first
|
71
|
-
cookbook_path =
|
72
|
-
|
72
|
+
cookbook_path = config[:cookbook_path]
|
73
73
|
local_version = get_local_cookbook_version(cookbook_path, cookbook)
|
74
74
|
remote_versions = get_remote_cookbook_versions(cookbook)
|
75
75
|
|
76
76
|
check_versions(cookbook, local_version, remote_versions)
|
77
77
|
end
|
78
78
|
|
79
|
-
|
80
79
|
def get_local_cookbook_version(cookbook_path, cookbook)
|
81
80
|
current_version = get_version(cookbook_path, cookbook).split(".").map{|i| i.to_i}
|
82
81
|
metadata_file = File.join(cookbook_path, cookbook, "metadata.rb")
|
@@ -66,39 +66,40 @@ module KnifeSpork
|
|
66
66
|
end
|
67
67
|
|
68
68
|
self.config = Chef::Config.merge!(config)
|
69
|
-
|
69
|
+
@conf = AppConf.new
|
70
|
+
|
70
71
|
if File.exists?("#{config[:cookbook_path].first.gsub("cookbooks","")}config/spork-config.yml")
|
71
|
-
|
72
|
+
@conf.load("#{config[:cookbook_path].first.gsub("cookbooks","")}config/spork-config.yml")
|
72
73
|
ui.msg "Loaded config file #{config[:cookbook_path].first.gsub("cookbooks","")}config/spork-config.yml...\n\n"
|
73
74
|
end
|
74
75
|
|
75
76
|
if File.exists?("/etc/spork-config.yml")
|
76
|
-
|
77
|
+
@conf.load("/etc/spork-config.yml")
|
77
78
|
ui.msg "Loaded config file /etc/spork-config.yml...\n\n"
|
78
79
|
end
|
79
80
|
|
80
81
|
if File.exists?(File.expand_path("~/.chef/spork-config.yml"))
|
81
|
-
|
82
|
+
@conf.load(File.expand_path("~/.chef/spork-config.yml"))
|
82
83
|
ui.msg "Loaded config file #{File.expand_path("~/.chef/spork-config.yml")}...\n\n"
|
83
84
|
end
|
84
85
|
|
85
86
|
config[:cookbook_path] ||= Chef::Config[:cookbook_path]
|
86
87
|
|
87
|
-
if @name_args.empty? &&
|
88
|
+
if @name_args.empty? && @conf.default_environments.nil?
|
88
89
|
show_usage
|
89
90
|
ui.error("You must specify a cookbook name and an environment")
|
90
91
|
exit 1
|
91
|
-
elsif @name_args.empty? &&
|
92
|
+
elsif @name_args.empty? && !@conf.default_environments.nil?
|
92
93
|
show_usage
|
93
94
|
ui.error("Default environments loaded from config, but you must specify a cookbook name")
|
94
95
|
exit 1
|
95
|
-
elsif @name_args.size != 2 &&
|
96
|
+
elsif @name_args.size != 2 && @conf.default_environments.nil?
|
96
97
|
show_usage
|
97
98
|
ui.error("You must specify a cookbook name and an environment")
|
98
99
|
exit 1
|
99
100
|
end
|
100
101
|
|
101
|
-
if
|
102
|
+
if !@conf.git.nil? && @conf.git.enabled
|
102
103
|
if !@@gitavail
|
103
104
|
ui.msg "Git gem not available, skipping git pull.\n\n"
|
104
105
|
else
|
@@ -106,14 +107,14 @@ module KnifeSpork
|
|
106
107
|
end
|
107
108
|
end
|
108
109
|
|
109
|
-
if
|
110
|
+
if @conf.default_environments.nil?
|
110
111
|
environments = [ @name_args[0] ]
|
111
112
|
@cookbook = @name_args[1]
|
112
|
-
elsif
|
113
|
+
elsif !@conf.default_environments.nil? && @name_args.size == 2
|
113
114
|
environments = [ @name_args[0] ]
|
114
115
|
@cookbook = @name_args[1]
|
115
116
|
else
|
116
|
-
environments =
|
117
|
+
environments = @conf.default_environments
|
117
118
|
@cookbook = @name_args[0]
|
118
119
|
end
|
119
120
|
|
@@ -229,29 +230,29 @@ module KnifeSpork
|
|
229
230
|
end
|
230
231
|
updated.save
|
231
232
|
|
232
|
-
if
|
233
|
-
if
|
234
|
-
gist_path =
|
233
|
+
if !@conf.gist.nil? && @conf.gist.enabled
|
234
|
+
if @conf.gist.in_chef
|
235
|
+
gist_path = @conf.gist.chef_path
|
235
236
|
else
|
236
|
-
gist_path =
|
237
|
+
gist_path = @conf.gist.path
|
237
238
|
end
|
238
239
|
|
239
240
|
msg = "Environment #{environment.gsub(".json","")} uploaded at #{Time.now.getutc} by #{ENV['USER']}\n\nConstraints updated on server in this version:\n\n#{env_diff.collect { |k, v| "#{k}: #{v}\n" }.join}"
|
240
241
|
@gist = %x[ echo "#{msg}" | #{gist_path}]
|
241
242
|
end
|
242
243
|
|
243
|
-
if
|
244
|
+
if !@conf.irccat.nil? && @conf.irccat.enabled
|
244
245
|
begin
|
245
246
|
|
246
|
-
if
|
247
|
-
channels =
|
247
|
+
if !@conf.irccat.channel?(String)
|
248
|
+
channels = @conf.irccat.channel
|
248
249
|
else
|
249
|
-
channels = ["#{
|
250
|
+
channels = ["#{@conf.irccat.channel}"]
|
250
251
|
end
|
251
252
|
|
252
253
|
channels.each do |c|
|
253
254
|
message = "#{c} #BOLD#PURPLECHEF:#NORMAL #{ENV['USER']} uploaded environment #TEAL#{environment.gsub(".json","")}#NORMAL #{@gist}"
|
254
|
-
s = TCPSocket.open(
|
255
|
+
s = TCPSocket.open(@conf.irccat.server,@conf.irccat.port)
|
255
256
|
s.write(message)
|
256
257
|
s.close
|
257
258
|
end
|
@@ -260,7 +261,7 @@ module KnifeSpork
|
|
260
261
|
end
|
261
262
|
end
|
262
263
|
|
263
|
-
if
|
264
|
+
if !@conf.eventinator.nil? && @conf.eventinator.enabled
|
264
265
|
metadata = {}
|
265
266
|
metadata[:promoted_cookbooks] = {}
|
266
267
|
promoted_cookbooks = []
|
@@ -274,7 +275,7 @@ module KnifeSpork
|
|
274
275
|
event_data[:username] = ENV['USER']
|
275
276
|
event_data[:status] = "#{ENV['USER']} promoted #{promoted_cookbooks.join(", ")} to #{environment.gsub(".json","")}"
|
276
277
|
event_data[:metadata] = metadata.to_json
|
277
|
-
uri = URI.parse(
|
278
|
+
uri = URI.parse(@conf.eventinator.url)
|
278
279
|
http = Net::HTTP.new(uri.host, uri.port)
|
279
280
|
## TODO: should make this configurable, timeout after 5 sec
|
280
281
|
http.read_timeout = 5;
|
@@ -283,19 +284,19 @@ module KnifeSpork
|
|
283
284
|
begin
|
284
285
|
response = http.request(request)
|
285
286
|
if response.code != "200"
|
286
|
-
ui.warn("Got a #{response.code} from #{
|
287
|
+
ui.warn("Got a #{response.code} from #{@conf.eventinator.url} promote wasn't eventinated")
|
287
288
|
end
|
288
289
|
rescue Timeout::Error
|
289
|
-
ui.warn("Timed out connecting to #{
|
290
|
+
ui.warn("Timed out connecting to #{@conf.eventinator.url} promote wasn't eventinated")
|
290
291
|
rescue Exception => msg
|
291
292
|
ui.warn("An unhandled execption occured while eventinating: #{msg}")
|
292
293
|
end
|
293
294
|
end
|
294
|
-
if
|
295
|
+
if !@conf.graphite.nil? && @conf.graphite.enabled
|
295
296
|
begin
|
296
297
|
time = Time.now
|
297
298
|
message = "deploys.chef.#{environment.gsub(".json","")} 1 #{time.to_i}\n"
|
298
|
-
s = TCPSocket.open(
|
299
|
+
s = TCPSocket.open(@conf.graphite.server,@conf.graphite.port)
|
299
300
|
s.write(message)
|
300
301
|
s.close
|
301
302
|
rescue Exception => msg
|
@@ -308,18 +309,15 @@ module KnifeSpork
|
|
308
309
|
cookbook_path = config[:cookbook_path]
|
309
310
|
|
310
311
|
if cookbook_path.size > 1
|
311
|
-
ui.warn "It looks like you have multiple cookbook paths defined so I'm
|
312
|
-
|
313
|
-
|
314
|
-
else
|
315
|
-
path = cookbook_path[0].gsub("cookbooks","environments") + "/#{environment}.json"
|
312
|
+
ui.warn "It looks like you have multiple cookbook paths defined so I'm trying the first one (#{cookbook_path[0]}).\n\n"
|
313
|
+
end
|
314
|
+
path = cookbook_path[0].gsub("cookbooks","environments") + "/#{environment}.json"
|
316
315
|
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
end
|
316
|
+
File.open(path, 'w') do |f2|
|
317
|
+
# use "\n" for two lines of text
|
318
|
+
f2.puts envjson
|
321
319
|
end
|
322
|
-
if
|
320
|
+
if !@conf.git.nil? && @conf.git.enabled
|
323
321
|
if !@@gitavail
|
324
322
|
ui.msg "Git gem not available, skipping git add.\n\n"
|
325
323
|
else
|
@@ -75,19 +75,20 @@ module KnifeSpork
|
|
75
75
|
end
|
76
76
|
|
77
77
|
self.config = Chef::Config.merge!(config)
|
78
|
-
|
78
|
+
@conf = AppConf.new
|
79
|
+
|
79
80
|
if File.exists?("#{config[:cookbook_path].first.gsub("cookbooks","")}config/spork-config.yml")
|
80
|
-
|
81
|
+
@conf.load("#{config[:cookbook_path].first.gsub("cookbooks","")}config/spork-config.yml")
|
81
82
|
ui.msg "Loaded config file #{config[:cookbook_path].first.gsub("cookbooks","")}config/spork-config.yml...\n\n"
|
82
83
|
end
|
83
84
|
|
84
85
|
if File.exists?("/etc/spork-config.yml")
|
85
|
-
|
86
|
+
@conf.load("/etc/spork-config.yml")
|
86
87
|
ui.msg "Loaded config file /etc/spork-config.yml...\n\n"
|
87
88
|
end
|
88
89
|
|
89
90
|
if File.exists?(File.expand_path("~/.chef/spork-config.yml"))
|
90
|
-
|
91
|
+
@conf.load(File.expand_path("~/.chef/spork-config.yml"))
|
91
92
|
ui.msg "Loaded config file #{File.expand_path("~/.chef/spork-config.yml")}...\n\n"
|
92
93
|
end
|
93
94
|
|
@@ -113,7 +114,7 @@ module KnifeSpork
|
|
113
114
|
end
|
114
115
|
end
|
115
116
|
|
116
|
-
if
|
117
|
+
if !@conf.foodcritic.nil? && @conf.foodcritic.enabled
|
117
118
|
if !@@fcavail
|
118
119
|
ui.msg "Foodcritic gem not available, skipping cookbook lint check.\n\n"
|
119
120
|
else
|
@@ -127,18 +128,18 @@ module KnifeSpork
|
|
127
128
|
cookbook.freeze_version
|
128
129
|
upload(cookbook, justify_width)
|
129
130
|
|
130
|
-
if
|
131
|
+
if !@conf.irccat.nil? && @conf.irccat.enabled
|
131
132
|
begin
|
132
133
|
|
133
|
-
if
|
134
|
-
channels =
|
134
|
+
if !@conf.irccat.channel?(String)
|
135
|
+
channels = @conf.irccat.channel
|
135
136
|
else
|
136
|
-
channels = ["#{
|
137
|
+
channels = ["#{@conf.irccat.channel}"]
|
137
138
|
end
|
138
139
|
|
139
140
|
channels.each do |c|
|
140
141
|
message = "#{c} #BOLD#PURPLECHEF:#NORMAL #{ENV['USER']} uploaded and froze cookbook #TEAL#{cookbook_name}#NORMAL version #TEAL#{cookbook.version}#NORMAL"
|
141
|
-
s = TCPSocket.open(
|
142
|
+
s = TCPSocket.open(@conf.irccat.server,@conf.irccat.port)
|
142
143
|
s.write(message)
|
143
144
|
s.close
|
144
145
|
end
|
@@ -147,7 +148,7 @@ module KnifeSpork
|
|
147
148
|
end
|
148
149
|
end
|
149
150
|
|
150
|
-
if
|
151
|
+
if !@conf.eventinator.nil? && @conf.eventinator.enabled
|
151
152
|
metadata = {}
|
152
153
|
metadata[:cookbook_name] = cookbook.name
|
153
154
|
metadata[:cookbook_version] = cookbook.version
|
@@ -158,7 +159,7 @@ module KnifeSpork
|
|
158
159
|
event_data[:status] = "#{ENV['USER']} uploaded and froze version #{cookbook.version} of cookbook #{cookbook_name}"
|
159
160
|
event_data[:metadata] = metadata.to_json
|
160
161
|
|
161
|
-
uri = URI.parse(
|
162
|
+
uri = URI.parse(@conf.eventinator.url)
|
162
163
|
|
163
164
|
http = Net::HTTP.new(uri.host, uri.port)
|
164
165
|
|
@@ -171,10 +172,10 @@ module KnifeSpork
|
|
171
172
|
begin
|
172
173
|
response = http.request(request)
|
173
174
|
if response.code != "200"
|
174
|
-
ui.warn("Got a #{response.code} from #{
|
175
|
+
ui.warn("Got a #{response.code} from #{@conf.eventinator.url} upload wasn't eventinated")
|
175
176
|
end
|
176
177
|
rescue Timeout::Error
|
177
|
-
ui.warn("Timed out connecting to #{
|
178
|
+
ui.warn("Timed out connecting to #{@conf.eventinator.url} upload wasn't eventinated")
|
178
179
|
rescue Exception => msg
|
179
180
|
ui.warn("An unhandled execption occured while eventinating: #{msg}")
|
180
181
|
end
|
@@ -288,24 +289,20 @@ WARNING
|
|
288
289
|
|
289
290
|
def foodcritic_lint_check(cookbook_name)
|
290
291
|
|
291
|
-
|
292
|
-
|
293
|
-
ui.warn "Skipping Lint Check.\n\n"
|
294
|
-
return
|
295
|
-
end
|
296
|
-
|
292
|
+
cookbook_path = cookbook_repo[cookbook_name].root_dir
|
293
|
+
|
297
294
|
fail_tags = []
|
298
|
-
fail_tags =
|
295
|
+
fail_tags = @conf.foodcritic.fail_tags unless @conf.foodcritic.fail_tags.nil?
|
299
296
|
|
300
297
|
tags = []
|
301
|
-
tags =
|
298
|
+
tags = @conf.foodcritic.tags unless @conf.foodcritic.tags.nil?
|
302
299
|
|
303
300
|
include_rules = []
|
304
|
-
include_rules =
|
301
|
+
include_rules = @conf.foodcritic.include_rules unless @conf.foodcritic.include_rules.nil?
|
305
302
|
|
306
303
|
ui.msg "Lint checking #{cookbook_name}..."
|
307
304
|
options = {:fail_tags => fail_tags, :tags =>tags, :include_rules => include_rules}
|
308
|
-
review = FoodCritic::Linter.new.check("#{
|
305
|
+
review = FoodCritic::Linter.new.check("#{cookbook_path}",options)
|
309
306
|
|
310
307
|
if review.failed?
|
311
308
|
ui.error "Lint check failed. Halting upload."
|
data/lib/knife-spork.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
|
+
- 10
|
9
|
+
version: 0.1.10
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Jon Cowie
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2012-04-
|
17
|
+
date: 2012-04-12 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -57,9 +57,9 @@ dependencies:
|
|
57
57
|
- !ruby/object:Gem::Version
|
58
58
|
segments:
|
59
59
|
- 0
|
60
|
-
-
|
60
|
+
- 4
|
61
61
|
- 0
|
62
|
-
version: 0.
|
62
|
+
version: 0.4.0
|
63
63
|
type: :runtime
|
64
64
|
version_requirements: *id003
|
65
65
|
description: A workflow plugin to help many devs work with the same chef repo/server
|