# typed: true
# frozen_string_literal: true

require 'frontman/builder/builder'
require 'frontman/builder/mapping'
require 'frontman/toolbox/timer'
require 'sorbet-runtime'

module Frontman
  module Builder
    class StatisticsCollector
      extend T::Sig

      sig do
        params(
          builder: Frontman::Builder::Builder,
          mapping: Frontman::Builder::Mapping,
          timer: Frontman::Toolbox::Timer,
          new_files: T::Array[String]
        ).void
      end
      def self.output(builder, mapping, timer, new_files = [])
        puts JSON.pretty_generate(mapping.all)
        puts '================================================================='
        puts "Previous build size : #{builder.current_build_files.size} files"
        puts "Current build size  : #{new_files.size} files"

        %i[updated created deleted unchanged].each do |status|
          puts "#{status}    : #{Array(mapping.all[status]).length} files"
        end

        timer.stop
        puts timer.output
      end
    end
  end
end