class Gitlab::Triage::EntityBuilders::IssueBuilder

Public Class Methods

new( type:, action:, resources:, network:, policy_spec: {}, separator: "\n") click to toggle source
# File lib/gitlab/triage/entity_builders/issue_builder.rb, line 9
def initialize(
  type:, action:, resources:, network:,
  policy_spec: {}, separator: "\n")
  @type = type
  @policy_spec = policy_spec
  @item_template = action[:item]
  @title_template = action[:title]
  @summary_template = action[:summary]
  @summary_destination = action[:destination]
  @redact_confidentials =
    action[:redact_confidential_resources] != false
  @resources = resources
  @network = network
  @separator = separator
end

Public Instance Methods

any_resources?() click to toggle source
# File lib/gitlab/triage/entity_builders/issue_builder.rb, line 41
def any_resources?
  @resources.any?
end
description() click to toggle source
# File lib/gitlab/triage/entity_builders/issue_builder.rb, line 29
def description
  @description ||= build_text(description_resource, @summary_template)
end
destination() click to toggle source
# File lib/gitlab/triage/entity_builders/issue_builder.rb, line 33
def destination
  @summary_destination
end
title() click to toggle source
# File lib/gitlab/triage/entity_builders/issue_builder.rb, line 25
def title
  @title ||= build_text(title_resource, @title_template)
end
valid?() click to toggle source
# File lib/gitlab/triage/entity_builders/issue_builder.rb, line 37
def valid?
  title =~ /\S+/ && any_resources?
end

Private Instance Methods

build_item(resource) click to toggle source
# File lib/gitlab/triage/entity_builders/issue_builder.rb, line 59
def build_item(resource)
  case resource
  when IssueBuilder
    resource.description
  else
    build_text(resource, @item_template)
  end
end
build_text(resource, template) click to toggle source
# File lib/gitlab/triage/entity_builders/issue_builder.rb, line 68
def build_text(resource, template)
  return '' unless template

  CommandBuilders::TextContentBuilder.new(
    template,
    resource: resource,
    network: @network,
    redact_confidentials: @redact_confidentials)
    .build_command.chomp
end
description_resource() click to toggle source
# File lib/gitlab/triage/entity_builders/issue_builder.rb, line 51
def description_resource
  title_resource.merge(title: title, items: items)
end
items() click to toggle source
# File lib/gitlab/triage/entity_builders/issue_builder.rb, line 55
def items
  @items ||= @resources.map(&method(:build_item)).join(@separator)
end
title_resource() click to toggle source
# File lib/gitlab/triage/entity_builders/issue_builder.rb, line 47
def title_resource
  { type: @type }
end