Sha256: 48031e830ed552a3ae96d77be1740333a50c9060136ff1412a5c33261947fc84

Contents?: true

Size: 1.24 KB

Versions: 4

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

require_relative 'base_policy'
require_relative 'rule_policy'
require_relative '../entity_builders/issue_builder'

module Gitlab
  module Triage
    module Policies
      class SummaryPolicy < BasePolicy
        # Build an issue from several rules policies
        def build_issue
          action = actions[:summarize]

          issues =
            resources.map do |inner_policy_spec, inner_resources|
              Policies::RulePolicy.new(
                type, inner_policy_spec, inner_resources, network)
                .build_issue
            end

          EntityBuilders::IssueBuilder.new(
            type: type,
            action: action,
            resources: issues.select(&:any_resources?),
            network: network,
            separator: "\n\n")
        end

        # Due to resources is a different type, this will never work
        # FIXME: We should try to make sure type is consistent for resources
        def comment?
          false
        end

        private

        def attach_resource_type(resources, type)
          resources.each_with_object({}) do |(rule, rule_resources), result|
            result[rule] = super(rule_resources, type)
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
gitlab-triage-1.1.0 lib/gitlab/triage/policies/summary_policy.rb
gitlab-triage-1.0.1 lib/gitlab/triage/policies/summary_policy.rb
gitlab-triage-1.0.0 lib/gitlab/triage/policies/summary_policy.rb
gitlab-triage-0.17.0 lib/gitlab/triage/policies/summary_policy.rb