Sha256: f3316a4a7c2b71f38184296f5db1166ca2114a2832ea84f5e753335383731441

Contents?: true

Size: 1.49 KB

Versions: 12

Compression:

Stored size: 1.49 KB

Contents

# typed: strict
# frozen_string_literal: true

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

        sig { params(prefix: String, packages: T::Array[ParsePackwerk::Package], package_tags: T::Array[Tag]).returns(T::Array[GaugeMetric]) }
        def self.get_public_usage_metrics(prefix, packages, package_tags)
          packages_except_for_root = packages.reject { |package| package.name == ParsePackwerk::ROOT_PACKAGE_NAME }
          all_files = packages_except_for_root.flat_map do |package|
            package.directory.glob('**/**.rb')
          end

          all_public_files = T.let([], T::Array[Pathname])
          is_using_public_directory = 0
          packages_except_for_root.each do |package|
            public_files = package.directory.glob('app/public/**/**.rb')
            all_public_files += public_files
            is_using_public_directory += 1 if public_files.any?
          end

          # In Datadog, we can divide public files by all files to get the ratio.
          # This is not a metric that we are targeting -- its for observability and reflection only.
          [
            GaugeMetric.for("#{prefix}.all_files.count", all_files.count, package_tags),
            GaugeMetric.for("#{prefix}.public_files.count", all_public_files.count, package_tags),
            GaugeMetric.for("#{prefix}.using_public_directory.count", is_using_public_directory, package_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/public_usage.rb
modularization_statistics-2.0.1 lib/modularization_statistics/private/metrics/public_usage.rb
modularization_statistics-2.0.0 lib/modularization_statistics/private/metrics/public_usage.rb
modularization_statistics-1.43.0 lib/modularization_statistics/private/metrics/public_usage.rb
modularization_statistics-1.42.0 lib/modularization_statistics/private/metrics/public_usage.rb
modularization_statistics-1.41.0 lib/modularization_statistics/private/metrics/public_usage.rb
modularization_statistics-1.40.0 lib/modularization_statistics/private/metrics/public_usage.rb
modularization_statistics-1.39.0 lib/modularization_statistics/private/metrics/public_usage.rb
modularization_statistics-1.38.0 lib/modularization_statistics/private/metrics/public_usage.rb
modularization_statistics-1.37.0 lib/modularization_statistics/private/metrics/public_usage.rb
modularization_statistics-1.36.0 lib/modularization_statistics/private/metrics/public_usage.rb
modularization_statistics-1.35.0 lib/modularization_statistics/private/metrics/public_usage.rb