class Packwerk::OffenseCollection

Attributes

errors[R]
new_violations[R]

Public Class Methods

new(root_path, deprecated_references = {}) click to toggle source
# File lib/packwerk/offense_collection.rb, line 15
def initialize(root_path, deprecated_references = {})
  @root_path = root_path
  @deprecated_references = T.let(deprecated_references, T::Hash[Packwerk::Package, Packwerk::DeprecatedReferences])
  @new_violations = T.let([], T::Array[Packwerk::ReferenceOffense])
  @errors = T.let([], T::Array[Packwerk::Offense])
end

Public Instance Methods

add_offense(offense) click to toggle source
# File lib/packwerk/offense_collection.rb, line 41
def add_offense(offense)
  unless offense.is_a?(ReferenceOffense)
    @errors << offense
    return
  end
  deprecated_references = deprecated_references_for(offense.reference.source_package)
  unless deprecated_references.add_entries(offense.reference, offense.violation_type)
    new_violations << offense
  end
end
dump_deprecated_references_files() click to toggle source
# File lib/packwerk/offense_collection.rb, line 58
def dump_deprecated_references_files
  @deprecated_references.each do |_, deprecated_references_file|
    deprecated_references_file.dump
  end
end
listed?(offense) click to toggle source
# File lib/packwerk/offense_collection.rb, line 32
def listed?(offense)
  return false unless offense.is_a?(ReferenceOffense)
  reference = offense.reference
  deprecated_references_for(reference.source_package).listed?(reference, violation_type: offense.violation_type)
end
outstanding_offenses() click to toggle source
# File lib/packwerk/offense_collection.rb, line 65
def outstanding_offenses
  errors + new_violations
end
stale_violations?() click to toggle source
# File lib/packwerk/offense_collection.rb, line 53
def stale_violations?
  @deprecated_references.values.any?(&:stale_violations?)
end

Private Instance Methods

deprecated_references_file_for(package) click to toggle source
# File lib/packwerk/offense_collection.rb, line 80
def deprecated_references_file_for(package)
  File.join(@root_path, package.name, "deprecated_references.yml")
end
deprecated_references_for(package) click to toggle source
# File lib/packwerk/offense_collection.rb, line 72
def deprecated_references_for(package)
  @deprecated_references[package] ||= Packwerk::DeprecatedReferences.new(
    package,
    deprecated_references_file_for(package),
  )
end