Class: OctocatalogDiff::CatalogDiff::Filter::CompilationDir
- Inherits:
-
OctocatalogDiff::CatalogDiff::Filter
- Object
- OctocatalogDiff::CatalogDiff::Filter
- OctocatalogDiff::CatalogDiff::Filter::CompilationDir
- Defined in:
- lib/octocatalog-diff/catalog-diff/filter/compilation_dir.rb
Overview
Filter out changes that are due to the catalog compilation directory.
Constant Summary
Constants inherited from OctocatalogDiff::CatalogDiff::Filter
Instance Attribute Summary
Attributes inherited from OctocatalogDiff::CatalogDiff::Filter
Instance Method Summary collapse
-
#filtered?(diff, options = {}) ⇒ Boolean
Public: Filter the diff if the change is due to the catalog compilation directory.
Methods inherited from OctocatalogDiff::CatalogDiff::Filter
apply_filters, assert_that_filter_exists, filter, filter?, #initialize
Constructor Details
This class inherits a constructor from OctocatalogDiff::CatalogDiff::Filter
Instance Method Details
#filtered?(diff, options = {}) ⇒ Boolean
Public: Filter the diff if the change is due to the catalog compilation directory. Determine this by obtaining the compiilation directory from each of the catalogs (supplied via options) and checking the differences. If the only thing different is the compilation directory, filter it out with a warning.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/octocatalog-diff/catalog-diff/filter/compilation_dir.rb', line 20 def filtered?(diff, = {}) return false unless [:from_compilation_dir] && [:to_compilation_dir] dir1 = [:to_compilation_dir] dir1_rexp = Regexp.escape(dir1) dir2 = [:from_compilation_dir] dir2_rexp = Regexp.escape(dir2) dir = Regexp.new("(?:#{dir1_rexp}|#{dir2_rexp})") # Check for added/removed resources where the title of the resource includes the compilation directory if (diff.addition? || diff.removal?) && diff.title.match(dir) = "Resource #{diff.type}[#{diff.title}]" += ' appears to depend on catalog compilation directory. Suppressed from results.' logger.warn return true end # Check for a change where the difference in a parameter exactly corresponds to the difference in the # compilation directory. if diff.change? && (diff.old_value.is_a?(String) || diff.new_value.is_a?(String)) from_before = nil from_after = nil from_match = false to_before = nil to_after = nil to_match = false if diff.old_value =~ /^(.*)#{dir2}(.*)$/m from_before = Regexp.last_match(1) || '' from_after = Regexp.last_match(2) || '' from_match = true end if diff.new_value =~ /^(.*)#{dir1}(.*)$/m to_before = Regexp.last_match(1) || '' to_after = Regexp.last_match(2) || '' to_match = true end if from_match && to_match && to_before == from_before && to_after == from_after = "Resource key #{diff.type}[#{diff.title}] #{diff.structure.join(' => ')}" += ' appears to depend on catalog compilation directory. Suppressed from results.' @logger.warn return true end if from_match || to_match = "Resource key #{diff.type}[#{diff.title}] #{diff.structure.join(' => ')}" += ' may depend on catalog compilation directory, but there may be differences.' += ' This is included in results for now, but please verify.' @logger.warn end end false end |