Sha256: 2ff60491dc9dc8872186e96791733bb32cf21cb2aa0a6043b9b4ca1ba47eda58

Contents?: true

Size: 1.43 KB

Versions: 4

Compression:

Stored size: 1.43 KB

Contents

# typed: strict
# frozen_string_literal: true

module Packwerk
  module Formatters
    class OffensesFormatter
      include Packwerk::OffensesFormatter

      extend T::Sig

      sig { params(style: OutputStyle).void }
      def initialize(style: OutputStyles::Plain.new)
        @style = style
      end

      sig { override.params(offenses: T::Array[T.nilable(Offense)]).returns(String) }
      def show_offenses(offenses)
        return "No offenses detected" if offenses.empty?

        <<~EOS
          #{offenses_list(offenses)}
          #{offenses_summary(offenses)}
        EOS
      end

      sig { override.params(offense_collection: Packwerk::OffenseCollection).returns(String) }
      def show_stale_violations(offense_collection)
        if offense_collection.stale_violations?
          "There were stale violations found, please run `packwerk update-deprecations`"
        else
          "No stale violations detected"
        end
      end

      private

      sig { params(offenses: T::Array[T.nilable(Offense)]).returns(String) }
      def offenses_list(offenses)
        offenses
          .compact
          .map { |offense| offense.to_s(@style) }
          .join("\n")
      end

      sig { params(offenses: T::Array[T.nilable(Offense)]).returns(String) }
      def offenses_summary(offenses)
        offenses_string = "offense".pluralize(offenses.length)
        "#{offenses.length} #{offenses_string} detected"
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
packwerk-2.2.0 lib/packwerk/formatters/offenses_formatter.rb
packwerk-2.1.1 lib/packwerk/formatters/offenses_formatter.rb
packwerk-2.1.0 lib/packwerk/formatters/offenses_formatter.rb
packwerk-2.0.0 lib/packwerk/formatters/offenses_formatter.rb