Sha256: 35c77d76221ecb104ab72791942521885a604948f78100984db0478cc6dd01ba

Contents?: true

Size: 1.24 KB

Versions: 2

Compression:

Stored size: 1.24 KB

Contents

# typed: strict
# frozen_string_literal: true

require "sorbet-runtime"

require "packwerk/reference_lister"

module Packwerk
  class CheckingDeprecatedReferences
    extend T::Sig
    include ReferenceLister

    sig { params(root_path: String).void }
    def initialize(root_path)
      @root_path = root_path
      @deprecated_references = T.let({}, T::Hash[Packwerk::Package, Packwerk::DeprecatedReferences])
    end

    sig do
      params(reference: Packwerk::Reference, violation_type: ViolationType)
        .returns(T::Boolean)
        .override
    end
    def listed?(reference, violation_type:)
      deprecated_references_for(reference.source_package).listed?(reference, violation_type: violation_type)
    end

    private

    sig { params(source_package: Packwerk::Package).returns(Packwerk::DeprecatedReferences) }
    def deprecated_references_for(source_package)
      @deprecated_references[source_package] ||= Packwerk::DeprecatedReferences.new(
        source_package,
        deprecated_references_file_for(source_package),
      )
    end

    sig { params(package: Packwerk::Package).returns(String) }
    def deprecated_references_file_for(package)
      File.join(@root_path, package.name, "deprecated_references.yml")
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
packwerk-1.1.3 lib/packwerk/checking_deprecated_references.rb
packwerk-1.1.2 lib/packwerk/checking_deprecated_references.rb