Sha256: 1861229c0ce826d297cd442666722553dbb1c46e68dabb7bc5c84f9d51577339

Contents?: true

Size: 958 Bytes

Versions: 4

Compression:

Stored size: 958 Bytes

Contents

# frozen_string_literal: true

require_relative '../utils/attributes_selection_manager'

module Geet
  module Services
    class ListIssues
      def initialize(repository, out: $stdout)
        @repository = repository
        @out = out
      end

      def execute(assignee: nil, **)
        selected_assignee = find_and_select_attributes(assignee) if assignee

        issues = @repository.issues(assignee: selected_assignee)

        issues.each do |issue|
          @out.puts "#{issue.number}. #{issue.title} (#{issue.link})"
        end
      end

      private

      def find_and_select_attributes(assignee)
        selection_manager = Geet::Utils::AttributesSelectionManager.new(@repository, out: @out)

        selection_manager.add_attribute(:collaborators, 'assignee', assignee, :single, name_method: :username)

        selected_assignee, _ = selection_manager.select_attributes

        selected_assignee&.username
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
geet-0.3.6 lib/geet/services/list_issues.rb
geet-0.3.5 lib/geet/services/list_issues.rb
geet-0.3.4 lib/geet/services/list_issues.rb
geet-0.3.3 lib/geet/services/list_issues.rb