Class: Geet::Services::CreatePr

Inherits:
Object
  • Object
show all
Includes:
Helpers::OsHelper
Defined in:
lib/geet/services/create_pr.rb

Instance Method Summary collapse

Methods included from Helpers::OsHelper

#os_open

Instance Method Details

#execute(repository, title, description, label_patterns: nil, milestone_pattern: nil, reviewer_patterns: nil, no_open_pr: nil, output: $stdout) ⇒ Object

options:

:label_patterns
:reviewer_patterns
:no_open_pr


15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/geet/services/create_pr.rb', line 15

def execute(repository, title, description, label_patterns: nil, milestone_pattern: nil, reviewer_patterns: nil, no_open_pr: nil, output: $stdout, **)
  labels_thread = select_labels(repository, label_patterns, output) if label_patterns
  milestone_thread = find_milestone(repository, milestone_pattern, output) if milestone_pattern
  reviewers_thread = select_reviewers(repository, reviewer_patterns, output) if reviewer_patterns

  selected_labels = labels_thread&.join&.value
  reviewers = reviewers_thread&.join&.value
  milestone = milestone_thread&.join&.value

  pr = create_pr(repository, title, description, output)

  assign_user_thread = assign_authenticated_user(pr, repository, output)
  add_labels_thread = add_labels(pr, selected_labels, output) if selected_labels
  set_milestone_thread = set_milestone(pr, milestone, output) if milestone
  request_review_thread = request_review(pr, reviewers, output) if reviewers

  assign_user_thread.join
  add_labels_thread&.join
  set_milestone_thread&.join
  request_review_thread&.join

  if no_open_pr
    output.puts "PR address: #{pr.link}"
  else
    os_open(pr.link)
  end

  pr
end