Sha256: dc64b1111ff441d0b5f5bcc35c55ebf11f33c30ed864b08faf2b94d102d8205f

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

# typed: true
# frozen_string_literal: true
require "sorbet-runtime"
require "benchmark"
require "packwerk/run_context"
require "packwerk/detect_stale_deprecated_references"
require "packwerk/commands/offense_progress_marker"
require "packwerk/commands/result"

module Packwerk
  module Commands
    class DetectStaleViolationsCommand
      extend T::Sig
      include OffenseProgressMarker
      def initialize(files:, configuration:, run_context: nil, progress_formatter: nil, reference_lister: nil)
        @configuration = configuration
        @run_context = run_context
        @reference_lister = reference_lister
        @progress_formatter = progress_formatter
        @files = files
      end

      sig { returns(Result) }
      def run
        @progress_formatter.started(@files)

        execution_time = Benchmark.realtime do
          @files.flat_map do |path|
            run_context.process_file(file: path).tap do |offenses|
              mark_progress(offenses: offenses, progress_formatter: @progress_formatter)
            end
          end
        end

        @progress_formatter.finished(execution_time)
        calculate_result
      end

      private

      def run_context
        @run_context ||= Packwerk::RunContext.from_configuration(@configuration, reference_lister: reference_lister)
      end

      def reference_lister
        @reference_lister ||= ::Packwerk::DetectStaleDeprecatedReferences.new(@configuration.root_path)
      end

      sig { returns(Result) }
      def calculate_result
        result_status = !reference_lister.stale_violations?
        message = "There were stale violations found, please run `packwerk update`"
        if result_status
          message = "No stale violations detected"
        end
        Result.new(message: message, status: result_status)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
packwerk-1.1.1 lib/packwerk/commands/detect_stale_violations_command.rb