Sha256: d7be5b5c001a136a81b7d4144a9f66350f08418a55bc4bd760fa233e331b01fc

Contents?: true

Size: 1.53 KB

Versions: 12

Compression:

Stored size: 1.53 KB

Contents

# typed: strict
# frozen_string_literal: true

module ModularizationStatistics
  module Private
    module Metrics
      class Files
        extend T::Sig

        sig do
          params(
            source_code_files: T::Array[SourceCodeFile],
            app_name: String
          ).returns(T::Array[GaugeMetric])
        end
        def self.get_metrics(source_code_files, app_name)
          all_metrics = T.let([], T::Array[GaugeMetric])
          app_level_tag = Tag.for('app', app_name)

          source_code_files.group_by { |file| file.team_owner&.name }.each do |team_name, files_for_team|
            file_tags = Metrics.tags_for_team(team_name) + [app_level_tag]
            all_metrics += get_file_metrics('by_team', file_tags, files_for_team)
          end

          file_tags = [app_level_tag]
          all_metrics += get_file_metrics('totals', file_tags, source_code_files)
          all_metrics
        end

        sig do
          params(
            metric_name_suffix: String,
            tags: T::Array[Tag],
            files: T::Array[SourceCodeFile]
          ).returns(T::Array[GaugeMetric])
        end
        def self.get_file_metrics(metric_name_suffix, tags, files)
          [
            GaugeMetric.for("component_files.#{metric_name_suffix}", files.count(&:componentized_file?), tags),
            GaugeMetric.for("packaged_files.#{metric_name_suffix}", files.count(&:packaged_file?), tags),
            GaugeMetric.for("all_files.#{metric_name_suffix}", files.count, tags),
          ]
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
modularization_statistics-2.0.2 lib/modularization_statistics/private/metrics/files.rb
modularization_statistics-2.0.1 lib/modularization_statistics/private/metrics/files.rb
modularization_statistics-2.0.0 lib/modularization_statistics/private/metrics/files.rb
modularization_statistics-1.43.0 lib/modularization_statistics/private/metrics/files.rb
modularization_statistics-1.42.0 lib/modularization_statistics/private/metrics/files.rb
modularization_statistics-1.41.0 lib/modularization_statistics/private/metrics/files.rb
modularization_statistics-1.40.0 lib/modularization_statistics/private/metrics/files.rb
modularization_statistics-1.39.0 lib/modularization_statistics/private/metrics/files.rb
modularization_statistics-1.38.0 lib/modularization_statistics/private/metrics/files.rb
modularization_statistics-1.37.0 lib/modularization_statistics/private/metrics/files.rb
modularization_statistics-1.36.0 lib/modularization_statistics/private/metrics/files.rb
modularization_statistics-1.35.0 lib/modularization_statistics/private/metrics/files.rb