Sha256: a6d48b48f6cee95a6d1e270f2a7817d494cc915f62cc1ed2093e9109a382fb23

Contents?: true

Size: 919 Bytes

Versions: 2

Compression:

Stored size: 919 Bytes

Contents

# frozen_string_literal: true

module Geet
  module Services
    class ListIssues
      def execute(repository, assignee_pattern: nil, output: $stdout, **)
        assignee_thread = find_assignee(repository, assignee_pattern, output) if assignee_pattern

        assignee = assignee_thread&.join&.value

        issues = repository.issues(assignee: assignee)

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

      private

      def find_assignee(repository, assignee_pattern, output)
        output.puts 'Finding assignee...'

        Thread.new do
          collaborators = repository.collaborators
          collaborator = collaborators.find { |collaborator| collaborator =~ /#{assignee_pattern}/i }
          collaborator || raise("No collaborator found for pattern: #{assignee_pattern.inspect}")
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
geet-0.3.0 lib/geet/services/list_issues.rb
geet-0.2.1 lib/geet/services/list_issues.rb