Sha256: ff699dabd628788b09e730038c429238e3271e43a2a8e8b8fe6d3eed468ce54a

Contents?: true

Size: 1.22 KB

Versions: 2

Compression:

Stored size: 1.22 KB

Contents

# typed: true
# frozen_string_literal: true

require "benchmark"

require "packwerk/inflector"
require "packwerk/output_style"
require "packwerk/output_styles/plain"

module Packwerk
  module Formatters
    class ProgressFormatter
      extend T::Sig

      sig { params(out: T.any(StringIO, IO), style: OutputStyle).void }
      def initialize(out, style: OutputStyles::Plain.new)
        @out = out
        @style = style
      end

      def started(target_files)
        files_size = target_files.size
        files_string = Inflector.default.pluralize("file", files_size)
        @out.puts("📦 Packwerk is inspecting #{files_size} #{files_string}")
      end

      def started_validation
        @out.puts("📦 Packwerk is running validation...")

        execution_time = Benchmark.realtime { yield }
        finished(execution_time)

        @out.puts("✅ Packages are valid. Use `packwerk check` to run static checks.")
      end

      def mark_as_inspected
        @out.print(".")
      end

      def mark_as_failed
        @out.print("#{@style.error}E#{@style.reset}")
      end

      def finished(execution_time)
        @out.puts
        @out.puts("📦 Finished in #{execution_time.round(2)} seconds")
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
packwerk-1.1.3 lib/packwerk/formatters/progress_formatter.rb
packwerk-1.1.2 lib/packwerk/formatters/progress_formatter.rb