Class: Chef::Knife
- Inherits:
-
Object
show all
- Defined in:
- lib/chef/knife/scribe_copy.rb,
lib/chef/knife/scribe_hire.rb,
lib/chef/knife/scribe_adjust.rb
Defined Under Namespace
Classes: ScribeAdjust, ScribeCopy, ScribeHire
Instance Method Summary
collapse
Instance Method Details
#deep_delete(delete_from, delete_spec) ⇒ Object
Also known as:
action_delete
308
309
310
|
# File 'lib/chef/knife/scribe_adjust.rb', line 308
def deep_delete(delete_from, delete_spec)
deep_delete!(delete_from.dup, delete_spec.dup)
end
|
#deep_delete!(delete_from, delete_spec) ⇒ Object
314
315
316
317
318
319
320
321
322
323
324
325
|
# File 'lib/chef/knife/scribe_adjust.rb', line 314
def deep_delete!(delete_from, delete_spec)
if delete_from.kind_of?(Hash) || delete_from.kind_of?(Array)
if delete_spec.kind_of?(Array)
delete_spec.each { |item| deep_delete!(delete_from, item) }
elsif delete_spec.kind_of?(Hash)
delete_spec.each { |key,item| deep_delete!(delete_from[key], item) }
else
delete_from.kind_of?(Array) ? delete_from.delete_at(delete_spec) : delete_from.delete(delete_spec)
end
end
delete_from
end
|
#diff ⇒ Object
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
|
# File 'lib/chef/knife/scribe_adjust.rb', line 327
def diff
original_file = Tempfile.new("original")
adjusted_file = Tempfile.new("adjusted")
begin
changes.each do |key, change|
ui.info("[#{key}]")
original_file.write(JSON.pretty_generate(change["original"]))
adjusted_file.write(JSON.pretty_generate(change["adjusted"]))
original_file.rewind
adjusted_file.rewind
diff_output = shell_out("diff -L original -L adjusted -u #{original_file.path} #{adjusted_file.path}")
ui.info(diff_output.stdout)
end
ensure
original_file.close
original_file.unlink
adjusted_file.close
adjusted_file.unlink
end
end
|