Sha256: ac1256a9bac1d789728a66dbb2cc61ed4ea3fa231ea2a8e14a438b10877265e0

Contents?: true

Size: 1.26 KB

Versions: 4

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

require_relative '../base'
require_relative '../../command_builders/text_content_builder'

module Gitlab
  module Triage
    module Action
      class IssueBuilder
        attr_reader :title

        def initialize(action, resources, net)
          @title = action[:title]
          @item_template = action[:item]
          @summary_template = action[:summary]
          @resources = resources
          @net = net
        end

        def description
          return '' unless @summary_template

          @description ||= CommandBuilders::TextContentBuilder.new(
            @summary_template, resource: summary_resource, net: @net)
            .build_command
        end

        def valid?
          title =~ /\S+/
        end

        private

        def summary_resource
          @summary_resource ||= {
            'items' => items,
            'title' => title
          }
        end

        def items
          return '' unless @item_template

          @items ||= @resources.map(&method(:build_item)).join("\n")
        end

        def build_item(resource)
          CommandBuilders::TextContentBuilder.new(
            @item_template, resource: resource, net: @net)
            .build_command.chomp
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
gitlab-triage-0.13.0 lib/gitlab/triage/action/summarize/issue_builder.rb
gitlab-triage-0.12.0 lib/gitlab/triage/action/summarize/issue_builder.rb
gitlab-triage-0.11.0 lib/gitlab/triage/action/summarize/issue_builder.rb
gitlab-triage-0.10.0 lib/gitlab/triage/action/summarize/issue_builder.rb