Class: ChefCLI::Policyfile::Differ
- Inherits:
-
Object
- Object
- ChefCLI::Policyfile::Differ
- Defined in:
- lib/chef-cli/policyfile/differ.rb
Constant Summary collapse
- POLICY_SECTIONS =
%w{ revision_id run_list named_run_lists cookbook_locks default_attributes override_attributes }.freeze
- LINES_OF_CONTEXT =
3
- INITIAL_FILE_LENGTH_DIFFERENCE =
0
- FORMAT =
:unified
Instance Attribute Summary collapse
-
#new_lock ⇒ Object
readonly
Returns the value of attribute new_lock.
-
#new_name ⇒ Object
readonly
Returns the value of attribute new_name.
-
#old_lock ⇒ Object
readonly
Returns the value of attribute old_lock.
-
#old_name ⇒ Object
readonly
Returns the value of attribute old_name.
-
#ui ⇒ Object
readonly
Returns the value of attribute ui.
Instance Method Summary collapse
- #added_cookbooks ⇒ Object
- #different? ⇒ Boolean
-
#initialize(old_name: nil, old_lock: nil, new_name: nil, new_lock: nil, ui: nil) ⇒ Differ
constructor
A new instance of Differ.
- #lock_name ⇒ Object
- #modified_cookbooks ⇒ Object
- #new_cookbook_locks ⇒ Object
- #old_cookbook_locks ⇒ Object
- #removed_cookbooks ⇒ Object
- #report_added_cookbooks ⇒ Object
- #report_default_attribute_changes ⇒ Object
- #report_modified_cookbooks ⇒ Object
- #report_override_attribute_changes ⇒ Object
- #report_removed_cookbooks ⇒ Object
- #report_rev_id_changes ⇒ Object
- #report_run_list_changes ⇒ Object
- #run_report ⇒ Object
- #updated_sections ⇒ Object
Constructor Details
#initialize(old_name: nil, old_lock: nil, new_name: nil, new_lock: nil, ui: nil) ⇒ Differ
Returns a new instance of Differ.
38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/chef-cli/policyfile/differ.rb', line 38 def initialize(old_name: nil, old_lock: nil, new_name: nil, new_lock: nil, ui: nil) @old_lock = old_lock @new_lock = new_lock @old_name = old_name @new_name = new_name @ui = ui @added_cookbooks = nil @removed_cookbooks = nil @modified_cookbooks = nil end |
Instance Attribute Details
#new_lock ⇒ Object (readonly)
Returns the value of attribute new_lock.
34 35 36 |
# File 'lib/chef-cli/policyfile/differ.rb', line 34 def new_lock @new_lock end |
#new_name ⇒ Object (readonly)
Returns the value of attribute new_name.
35 36 37 |
# File 'lib/chef-cli/policyfile/differ.rb', line 35 def new_name @new_name end |
#old_lock ⇒ Object (readonly)
Returns the value of attribute old_lock.
32 33 34 |
# File 'lib/chef-cli/policyfile/differ.rb', line 32 def old_lock @old_lock end |
#old_name ⇒ Object (readonly)
Returns the value of attribute old_name.
33 34 35 |
# File 'lib/chef-cli/policyfile/differ.rb', line 33 def old_name @old_name end |
#ui ⇒ Object (readonly)
Returns the value of attribute ui.
36 37 38 |
# File 'lib/chef-cli/policyfile/differ.rb', line 36 def ui @ui end |
Instance Method Details
#added_cookbooks ⇒ Object
166 167 168 169 |
# File 'lib/chef-cli/policyfile/differ.rb', line 166 def added_cookbooks detect_cookbook_changes if @added_cookbooks.nil? @added_cookbooks end |
#different? ⇒ Boolean
68 69 70 |
# File 'lib/chef-cli/policyfile/differ.rb', line 68 def different? !updated_sections.empty? end |
#lock_name ⇒ Object
50 51 52 |
# File 'lib/chef-cli/policyfile/differ.rb', line 50 def lock_name old_lock["name"] end |
#modified_cookbooks ⇒ Object
176 177 178 179 |
# File 'lib/chef-cli/policyfile/differ.rb', line 176 def modified_cookbooks detect_cookbook_changes if @modified_cookbooks.nil? @modified_cookbooks end |
#new_cookbook_locks ⇒ Object
58 59 60 |
# File 'lib/chef-cli/policyfile/differ.rb', line 58 def new_cookbook_locks new_lock["cookbook_locks"] end |
#old_cookbook_locks ⇒ Object
54 55 56 |
# File 'lib/chef-cli/policyfile/differ.rb', line 54 def old_cookbook_locks old_lock["cookbook_locks"] end |
#removed_cookbooks ⇒ Object
171 172 173 174 |
# File 'lib/chef-cli/policyfile/differ.rb', line 171 def removed_cookbooks detect_cookbook_changes if @removed_cookbooks.nil? @removed_cookbooks end |
#report_added_cookbooks ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/chef-cli/policyfile/differ.rb', line 120 def report_added_cookbooks return nil if added_cookbooks.empty? h1("ADDED COOKBOOKS") added_cookbooks.each do |cb_name| ui.print("\n") old_lock = [] new_lock = pretty_json(new_cookbook_locks[cb_name]) h2(cb_name) diff_lines(old_lock, new_lock) end end |
#report_default_attribute_changes ⇒ Object
146 147 148 149 150 151 152 153 154 |
# File 'lib/chef-cli/policyfile/differ.rb', line 146 def report_default_attribute_changes return nil unless updated_sections.include?("default_attributes") h1("DEFAULT ATTRIBUTES CHANGED") old_default = pretty_json(old_lock["default_attributes"]) new_default = pretty_json(new_lock["default_attributes"]) diff_lines(old_default, new_default) end |
#report_modified_cookbooks ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/chef-cli/policyfile/differ.rb', line 133 def report_modified_cookbooks return nil if modified_cookbooks.empty? h1("MODIFIED COOKBOOKS") modified_cookbooks.each do |cb_name| ui.print("\n") old_lock = pretty_json(old_cookbook_locks[cb_name]) new_lock = pretty_json(new_cookbook_locks[cb_name]) h2(cb_name) diff_lines(old_lock, new_lock) end end |
#report_override_attribute_changes ⇒ Object
156 157 158 159 160 161 162 163 164 |
# File 'lib/chef-cli/policyfile/differ.rb', line 156 def report_override_attribute_changes return nil unless updated_sections.include?("override_attributes") h1("OVERRIDE ATTRIBUTES CHANGED") old_override = pretty_json(old_lock["override_attributes"]) new_override = pretty_json(new_lock["override_attributes"]) diff_lines(old_override, new_override) end |
#report_removed_cookbooks ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/chef-cli/policyfile/differ.rb', line 107 def report_removed_cookbooks return nil if removed_cookbooks.empty? h1("REMOVED COOKBOOKS") removed_cookbooks.each do |cb_name| ui.print("\n") old_lock = pretty_json(old_cookbook_locks[cb_name]) new_lock = [] h2(cb_name) diff_lines(old_lock, new_lock) end end |
#report_rev_id_changes ⇒ Object
89 90 91 92 93 94 |
# File 'lib/chef-cli/policyfile/differ.rb', line 89 def report_rev_id_changes h1("REVISION ID CHANGED") old_rev = old_lock["revision_id"] new_rev = new_lock["revision_id"] diff_lines([ old_rev ], [ new_rev ]) end |
#report_run_list_changes ⇒ Object
96 97 98 99 100 101 102 103 104 105 |
# File 'lib/chef-cli/policyfile/differ.rb', line 96 def report_run_list_changes return nil unless updated_sections.include?("run_list") h1("RUN LIST CHANGED") old_run_list = old_lock["run_list"] new_run_list = new_lock["run_list"] diff_lines(old_run_list, new_run_list) end |
#run_report ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/chef-cli/policyfile/differ.rb', line 72 def run_report unless different? ui.err("No changes for policy lock '#{lock_name}' between '#{old_name}' and '#{new_name}'") return true end ui.print("Policy lock '#{lock_name}' differs between '#{old_name}' and '#{new_name}':\n\n") report_rev_id_changes report_run_list_changes report_added_cookbooks report_removed_cookbooks report_modified_cookbooks report_default_attribute_changes report_override_attribute_changes end |
#updated_sections ⇒ Object
62 63 64 65 66 |
# File 'lib/chef-cli/policyfile/differ.rb', line 62 def updated_sections @updated_sections ||= POLICY_SECTIONS.select do |key| old_lock[key] != new_lock[key] end end |