Sha256: 214f92260c8d0c0873f0bd40917d114e4a55e48ee3a1bf0092d1e7364810c635

Contents?: true

Size: 1.47 KB

Versions: 1

Compression:

Stored size: 1.47 KB

Contents

# typed: strict
# frozen_string_literal: true

module PackStats
  module Private
    module Metrics
      extend T::Sig
      UNKNOWN_OWNER = T.let('Unknown', String)

      sig { params(team_name: T.nilable(String)).returns(T::Array[Tag]) }
      def self.tags_for_team(team_name)
        [Tag.for('team', team_name || UNKNOWN_OWNER)]
      end

      sig { params(package: ParsePackwerk::Package, app_name: String).returns(T::Array[Tag]) }
      def self.tags_for_package(package, app_name)
        [
          Tag.new(key: 'package', value: humanized_package_name(package.name)),
          Tag.new(key: 'app', value: app_name),
          *Metrics.tags_for_team(Private.package_owner(package)),
        ]
      end

      sig { params(team_name: T.nilable(String)).returns(T::Array[Tag]) }
      def self.tags_for_other_team(team_name)
        [Tag.for('other_team', team_name || Metrics::UNKNOWN_OWNER)]
      end

      sig { params(name: String).returns(String) }
      def self.humanized_package_name(name)
        if name == ParsePackwerk::ROOT_PACKAGE_NAME
          'root'
        else
          name
        end
      end

      sig { params(violations: T::Array[ParsePackwerk::Violation]).returns(Integer) }
      def self.file_count(violations)
        violations.sum { |v| v.files.count }
      end

      sig { params(package: ParsePackwerk::Package).returns(T::Boolean) }
      def self.has_readme?(package)
        package.directory.join('README.md').exist?
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pack_stats-0.1.0 lib/pack_stats/private/metrics.rb