Sha256: 1362ede4cfc9a033b50e8adefe900a5afda28f58b2f8b5c9e2950fd5ad1559e7

Contents?: true

Size: 1.06 KB

Versions: 14

Compression:

Stored size: 1.06 KB

Contents

# typed: strict

module CodeOwnership
  module Private
    module Validations
      class FilesHaveUniqueOwners
        extend T::Sig
        extend T::Helpers
        include Interface

        sig { override.params(files: T::Array[String], autocorrect: T::Boolean, stage_changes: T::Boolean).returns(T::Array[String]) }
        def validation_errors(files:, autocorrect: true, stage_changes: true)
          files_by_mapper = Private.files_by_mapper(files)

          files_mapped_by_multiple_mappers = files_by_mapper.select { |_file, mapper_descriptions| mapper_descriptions.count > 1 }.to_h

          errors = T.let([], T::Array[String])

          if files_mapped_by_multiple_mappers.any?
            errors << <<~MSG
              Code ownership should only be defined for each file in one way. The following files have declared ownership in multiple ways.

              #{files_mapped_by_multiple_mappers.map { |file, descriptions| "- #{file} (#{descriptions.join(', ')})" }.join("\n")}
            MSG
          end

          errors
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
code_ownership-1.31.1 lib/code_ownership/private/validations/files_have_unique_owners.rb
code_ownership-1.31.0 lib/code_ownership/private/validations/files_have_unique_owners.rb
code_ownership-1.30.0 lib/code_ownership/private/validations/files_have_unique_owners.rb
code_ownership-1.29.3 lib/code_ownership/private/validations/files_have_unique_owners.rb
code_ownership-1.29.2 lib/code_ownership/private/validations/files_have_unique_owners.rb
code_ownership-1.29.1 lib/code_ownership/private/validations/files_have_unique_owners.rb
code_ownership-1.29.0 lib/code_ownership/private/validations/files_have_unique_owners.rb
code_ownership-1.28.2 lib/code_ownership/private/validations/files_have_unique_owners.rb
code_ownership-1.28.0 lib/code_ownership/private/validations/files_have_unique_owners.rb
code_ownership-1.27.0 lib/code_ownership/private/validations/files_have_unique_owners.rb
code_ownership-1.26.0 lib/code_ownership/private/validations/files_have_unique_owners.rb
code_ownership-1.25.0 lib/code_ownership/private/validations/files_have_unique_owners.rb
code_ownership-1.24.0 lib/code_ownership/private/validations/files_have_unique_owners.rb
code_ownership-1.23.0 lib/code_ownership/private/validations/files_have_unique_owners.rb