Sha256: 15f7ecfe497865a4f238ca44e04b2855c3b7770f01922f8724718a0cdea51b75

Contents?: true

Size: 1.56 KB

Versions: 2

Compression:

Stored size: 1.56 KB

Contents

# typed: strict
# frozen_string_literal: true

require "sorbet-runtime"

require "packwerk/deprecated_references"
require "packwerk/reference"
require "packwerk/reference_lister"
require "packwerk/violation_type"

module Packwerk
  class CacheDeprecatedReferences
    extend T::Sig
    extend T::Helpers
    include ReferenceLister
    abstract!

    sig do
      params(
        root_path: String,
        deprecated_references: T::Hash[Packwerk::Package, Packwerk::DeprecatedReferences]
      ).void
    end
    def initialize(root_path, deprecated_references = {})
      @root_path = root_path
      @deprecated_references = T.let(deprecated_references, 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 = deprecated_references_for(reference.source_package)
      deprecated_references.add_entries(reference, violation_type.serialize)
      true
    end

    private

    sig { params(package: Packwerk::Package).returns(Packwerk::DeprecatedReferences) }
    def deprecated_references_for(package)
      @deprecated_references[package] ||= Packwerk::DeprecatedReferences.new(
        package,
        deprecated_references_file_for(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/cache_deprecated_references.rb
packwerk-1.1.2 lib/packwerk/cache_deprecated_references.rb