class HeadChef::CookbookDiff
Attributes
diff_hash[R]
Public Class Methods
new()
click to toggle source
# File lib/head_chef/cookbook_diff.rb, line 5 def initialize @diff_hash = { add: [], update: [], remove: [], revert: [], conflict: [] } end
Public Instance Methods
add(cookbook)
click to toggle source
@TODO: cleanup @TODO: switch statements
# File lib/head_chef/cookbook_diff.rb, line 15 def add(cookbook) # Removal is the only operation that does not require a diff, as no # cookbook will be uploaded if cookbook.chef_version && !cookbook.berkshelf_version @diff_hash[:remove] << cookbook and return end unless cookbook.diff @diff_hash[:conflict] << cookbook and return end if cookbook.berkshelf_version && !cookbook.chef_version @diff_hash[:add] << cookbook and return end berkshelf_version = Semantic::Version.new(cookbook.berkshelf_version) chef_version = Semantic::Version.new(cookbook.chef_version) if berkshelf_version > chef_version @diff_hash[:update] << cookbook and return elsif berkshelf_version < chef_version @diff_hash[:revert] << cookbook and return end end
conflicts()
click to toggle source
# File lib/head_chef/cookbook_diff.rb, line 40 def conflicts @diff_hash[:conflict] end
conflicts?()
click to toggle source
# File lib/head_chef/cookbook_diff.rb, line 44 def conflicts? !@diff_hash[:conflict].empty? end
empty?()
click to toggle source
# File lib/head_chef/cookbook_diff.rb, line 48 def empty? [:add, :update, :remove, :revert, :conflict].each do |method| return false if !@diff_hash[method].empty? end true end
pretty_print()
click to toggle source
# File lib/head_chef/cookbook_diff.rb, line 56 def pretty_print if self.empty? HeadChef.ui.say("Berksfile and Chef environment are identical", :green) return end colors = { add: :green, update: :green, remove: :red, revert: :red, conflict: :red } [:add, :update, :remove, :revert, :conflict].each do |method| color = colors[method] unless @diff_hash[method].empty? HeadChef.ui.say("#{method.to_s.upcase}:", color) diff_hash[method].each do |cookbook| HeadChef.ui.say(" #{cookbook.to_s}", color) end end end end