knife-spork 0.1.4 → 0.1.6
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/knife-spork.gemspec +2 -2
- data/lib/chef/knife/spork-bump.rb +5 -5
- data/lib/chef/knife/spork-promote.rb +64 -17
- data/lib/chef/knife/spork-upload.rb +18 -5
- data/lib/knife-spork.rb +1 -1
- metadata +3 -3
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-02-
|
|
16
|
+
s.version = '0.1.6'
|
|
17
|
+
s.date = '2012-02-21'
|
|
18
18
|
s.rubyforge_project = 'knife-spork'
|
|
19
19
|
|
|
20
20
|
## Make sure your summary is short. The description may be as long
|
|
@@ -70,12 +70,14 @@ module KnifeSpork
|
|
|
70
70
|
bump_type = name_args[1]
|
|
71
71
|
elsif name_args.size == 2
|
|
72
72
|
bump_type = name_args.last
|
|
73
|
+
elsif name_args.size == 1
|
|
74
|
+
bump_type = "patch"
|
|
73
75
|
else
|
|
74
76
|
ui.fatal "Please specify the cookbook whose version you which to bump, and the type of bump you wish to apply."
|
|
75
77
|
show_usage
|
|
76
78
|
exit 1
|
|
77
79
|
end
|
|
78
|
-
|
|
80
|
+
|
|
79
81
|
unless TYPE_INDEX.has_key?(bump_type)
|
|
80
82
|
ui.fatal "Sorry, '#{name_args.last}' isn't a valid bump type. Specify one of 'major', 'minor', 'patch' or 'manual'"
|
|
81
83
|
show_usage
|
|
@@ -86,13 +88,11 @@ module KnifeSpork
|
|
|
86
88
|
manual_version = name_args.last
|
|
87
89
|
cookbook = name_args.first
|
|
88
90
|
cookbook_path = Array(config[:cookbook_path]).first
|
|
89
|
-
patch_type = "manual"
|
|
90
91
|
patch_manual(cookbook_path, cookbook, manual_version)
|
|
91
92
|
else
|
|
92
93
|
cookbook = name_args.first
|
|
93
|
-
patch_type = name_args.last
|
|
94
94
|
cookbook_path = Array(config[:cookbook_path]).first
|
|
95
|
-
patch(cookbook_path, cookbook,
|
|
95
|
+
patch(cookbook_path, cookbook, bump_type)
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
if !AppConf.git.nil? && AppConf.git.enabled
|
|
@@ -170,7 +170,7 @@ module KnifeSpork
|
|
|
170
170
|
rescue ArgumentError => e
|
|
171
171
|
ui.warn "Git: The root of your chef repo doesn't look like it's a git repo. Skipping git add...\n\n"
|
|
172
172
|
rescue
|
|
173
|
-
ui.warn "Git: Cookbook
|
|
173
|
+
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..."
|
|
174
174
|
ui.warn "#{strio.string}"
|
|
175
175
|
end
|
|
176
176
|
end
|
|
@@ -120,7 +120,15 @@ module KnifeSpork
|
|
|
120
120
|
environments.each do |e|
|
|
121
121
|
ui.msg ""
|
|
122
122
|
ui.msg "Environment: #{e}"
|
|
123
|
-
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
cookbook_path = config[:cookbook_path]
|
|
126
|
+
if cookbook_path.size > 1
|
|
127
|
+
@environment = loader.load_from("environments", "#{e}.json")
|
|
128
|
+
else
|
|
129
|
+
path = cookbook_path[0].gsub("cookbooks","environments") + "/#{e}.json"
|
|
130
|
+
@environment = loader.object_from_file("#{path}")
|
|
131
|
+
end
|
|
124
132
|
|
|
125
133
|
if @cookbook == "all"
|
|
126
134
|
ui.msg "Promoting ALL cookbooks to environment #{@environment}"
|
|
@@ -195,7 +203,12 @@ module KnifeSpork
|
|
|
195
203
|
env_server = Chef::Environment.load(environment.gsub(".json","")).to_hash["cookbook_versions"]
|
|
196
204
|
env_local = updated.to_hash["cookbook_versions"]
|
|
197
205
|
env_diff = env_server.diff(env_local)
|
|
198
|
-
|
|
206
|
+
|
|
207
|
+
if env_diff.size > 1
|
|
208
|
+
ui.warn "You're about to promote changes to several cookbooks:"
|
|
209
|
+
ui.warn "\n#{env_diff.collect { |k, v| "#{k}: #{v}\n" }.join}"
|
|
210
|
+
ui.confirm("Are you sure you want to continue?")
|
|
211
|
+
end
|
|
199
212
|
updated.save
|
|
200
213
|
|
|
201
214
|
if !AppConf.gist.nil? && AppConf.gist.enabled
|
|
@@ -209,21 +222,39 @@ module KnifeSpork
|
|
|
209
222
|
@gist = %x[ echo "#{msg}" | #{gist_path}]
|
|
210
223
|
end
|
|
211
224
|
|
|
212
|
-
if !AppConf.irccat.nil? && AppConf.irccat.enabled
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
225
|
+
if !AppConf.irccat.nil? && AppConf.irccat.enabled
|
|
226
|
+
begin
|
|
227
|
+
|
|
228
|
+
if !AppConf.irccat.channel?(String)
|
|
229
|
+
channels = AppConf.irccat.channel
|
|
230
|
+
else
|
|
231
|
+
channels = ["#{AppConf.irccat.channel}"]
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
channels.each do |c|
|
|
235
|
+
message = "#{c} #BOLD#PURPLECHEF:#NORMAL #{ENV['USER']} uploaded environment #TEAL#{environment.gsub(".json","")}#NORMAL #{@gist}"
|
|
236
|
+
s = TCPSocket.open(AppConf.irccat.server,AppConf.irccat.port)
|
|
237
|
+
s.write(message)
|
|
238
|
+
s.close
|
|
239
|
+
end
|
|
240
|
+
rescue Exception => msg
|
|
241
|
+
puts "Something went wrong with sending to irccat: (#{msg})"
|
|
242
|
+
end
|
|
217
243
|
end
|
|
218
244
|
|
|
219
245
|
|
|
220
246
|
if !AppConf.graphite.nil? && AppConf.graphite.enabled
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
247
|
+
begin
|
|
248
|
+
time = Time.now
|
|
249
|
+
message = "deploys.chef.#{environment.gsub(".json","")} 1 #{time.to_i}\n"
|
|
250
|
+
s = TCPSocket.open(AppConf.graphite.server,AppConf.graphite.port)
|
|
251
|
+
s.write(message)
|
|
252
|
+
s.close
|
|
253
|
+
rescue Exception => msg
|
|
254
|
+
puts "Something went wrong with sending to graphite: (#{msg})"
|
|
255
|
+
end
|
|
226
256
|
end
|
|
257
|
+
|
|
227
258
|
end
|
|
228
259
|
|
|
229
260
|
def save_environment_changes(environment,envjson)
|
|
@@ -281,16 +312,32 @@ module KnifeSpork
|
|
|
281
312
|
ui.warn "It looks like you have multiple cookbook paths defined so I can't tell if you're running inside a git repo.\n\n"
|
|
282
313
|
else
|
|
283
314
|
begin
|
|
284
|
-
path = cookbook_path[0].gsub("cookbooks","")
|
|
315
|
+
path = cookbook_path[0].gsub("/cookbooks","")
|
|
285
316
|
ui.msg "Opening git repo #{path}\n\n"
|
|
286
317
|
g = Git.open(path, :log => Logger.new(strio))
|
|
287
318
|
ui.msg "Pulling latest changes from git\n\n"
|
|
288
|
-
|
|
319
|
+
output = IO.popen ("cd #{path} && git pull 2>&1")
|
|
320
|
+
Process.wait
|
|
321
|
+
exit_code = $?
|
|
322
|
+
if exit_code.exitstatus == 0
|
|
323
|
+
ui.msg "#{output.read()}\n"
|
|
324
|
+
else
|
|
325
|
+
ui.error "#{output.read()}\n"
|
|
326
|
+
exit 1
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
ui.msg "Pulling latest changes from git submodules (if any)\n\n"
|
|
330
|
+
output = IO.popen ("cd #{path} && git submodule foreach git pull 2>&1")
|
|
331
|
+
Process.wait
|
|
332
|
+
exit_code = $?
|
|
333
|
+
if exit_code.exitstatus == 0
|
|
334
|
+
ui.msg "#{output.read()}\n"
|
|
335
|
+
else
|
|
336
|
+
ui.error "#{output.read()}\n"
|
|
337
|
+
exit 1
|
|
338
|
+
end
|
|
289
339
|
rescue ArgumentError => e
|
|
290
340
|
ui.warn "Git: The root of your chef repo doesn't look like it's a git repo. Skipping git pull...\n\n"
|
|
291
|
-
rescue
|
|
292
|
-
ui.warn "Git: Something went wrong with git pull, Dumping log info..."
|
|
293
|
-
ui.warn "#{strio.string}"
|
|
294
341
|
end
|
|
295
342
|
end
|
|
296
343
|
end
|
|
@@ -118,12 +118,25 @@ module KnifeSpork
|
|
|
118
118
|
cookbook.freeze_version
|
|
119
119
|
upload(cookbook, justify_width)
|
|
120
120
|
version_constraints_to_update[cookbook_name] = cookbook.version
|
|
121
|
-
|
|
121
|
+
|
|
122
122
|
if !AppConf.irccat.nil? && AppConf.irccat.enabled
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
123
|
+
begin
|
|
124
|
+
|
|
125
|
+
if !AppConf.irccat.channel?(String)
|
|
126
|
+
channels = AppConf.irccat.channel
|
|
127
|
+
else
|
|
128
|
+
channels = ["#{AppConf.irccat.channel}"]
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
channels.each do |c|
|
|
132
|
+
message = "#{c} #BOLD#PURPLECHEF:#NORMAL #{ENV['USER']} uploaded and froze cookbook #TEAL#{cookbook_name}#NORMAL version #TEAL#{cookbook.version}#NORMAL"
|
|
133
|
+
s = TCPSocket.open(AppConf.irccat.server,AppConf.irccat.port)
|
|
134
|
+
s.write(message)
|
|
135
|
+
s.close
|
|
136
|
+
end
|
|
137
|
+
rescue Exception => msg
|
|
138
|
+
puts "Something went wrong with sending to irccat: (#{msg})"
|
|
139
|
+
end
|
|
127
140
|
end
|
|
128
141
|
|
|
129
142
|
rescue Chef::Exceptions::CookbookNotFoundInRepo => e
|
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
|
+
- 6
|
|
9
|
+
version: 0.1.6
|
|
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-02-
|
|
17
|
+
date: 2012-02-21 00:00:00 +00:00
|
|
18
18
|
default_executable:
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|