Sha256: 90ee9a298e845e31c3c0ee659085aa14d4eed84799a8ea79dbb51b6fbfba4758

Contents?: true

Size: 1.89 KB

Versions: 18

Compression:

Stored size: 1.89 KB

Contents

# frozen_string_literal: true

# typed: true

module CodeOwnership
  module Private
    module OwnershipMappers
      class TeamYmlOwnership
        extend T::Sig
        include Mapper

        @@map_files_to_owners = T.let(@map_files_to_owners, T.nilable(T::Hash[String, ::CodeTeams::Team])) # rubocop:disable Style/ClassVars
        @@map_files_to_owners = {} # rubocop:disable Style/ClassVars

        sig do
          params(files: T::Array[String]).
          returns(T::Hash[String, ::CodeTeams::Team])
        end
        def map_files_to_owners(files) # rubocop:disable Lint/UnusedMethodArgument
          return @@map_files_to_owners if @@map_files_to_owners&.keys && @@map_files_to_owners.keys.count > 0

          @@map_files_to_owners = CodeTeams.all.each_with_object({}) do |team, map| # rubocop:disable Style/ClassVars
            map[team.config_yml] = team
          end
        end

        sig do
          override.params(file: String).
            returns(T.nilable(::CodeTeams::Team))
        end
        def map_file_to_owner(file)
          map_files_to_owners([file])[file]
        end

        sig do
          override.params(files: T::Array[String]).
            returns(T::Hash[String, ::CodeTeams::Team])
        end
        def globs_to_owner(files)
          CodeTeams.all.each_with_object({}) do |team, map| # rubocop:disable Style/ClassVars
            map[team.config_yml] = team
          end
        end

        sig { override.void }
        def bust_caches!
          @@map_files_to_owners = {} # rubocop:disable Style/ClassVars
        end

        sig do
          override.params(cache: GlobsToOwningTeamMap, files: T::Array[String]).returns(GlobsToOwningTeamMap)
        end
        def update_cache(cache, files)
          globs_to_owner(files)
        end

        sig { override.returns(String) }
        def description
          'Team YML ownership'
        end
      end
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
code_ownership-1.36.2 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.36.1 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.36.0 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.35.0 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.34.2 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.34.1 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.33.1 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.33.0 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.32.19 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.32.18 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.32.17 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.32.16 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.32.15 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.32.14 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.32.13 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.32.12 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.32.11 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb
code_ownership-1.32.10 lib/code_ownership/private/ownership_mappers/team_yml_ownership.rb