Class: Geet::Services::CreatePr

Inherits:
AbstractCreateIssue show all
Defined in:
lib/geet/services/create_pr.rb

Constant Summary collapse

DEFAULT_GIT_CLIENT =
Geet::Utils::GitClient.new

Constants inherited from AbstractCreateIssue

AbstractCreateIssue::SUMMARY_BACKUP_FILENAME

Instance Method Summary collapse

Methods included from Helpers::OsHelper

#execute_command, #open_file_with_default_application

Constructor Details

#initialize(repository, out: $stdout, git_client: DEFAULT_GIT_CLIENT) ⇒ CreatePr

Returns a new instance of CreatePr.



10
11
12
13
14
# File 'lib/geet/services/create_pr.rb', line 10

def initialize(repository, out: $stdout, git_client: DEFAULT_GIT_CLIENT)
  super(repository)
  @git_client = git_client
  @out = out
end

Instance Method Details

#execute(title, description, labels: nil, milestone: nil, reviewers: nil, no_open_pr: nil, automated_mode: false) ⇒ Object

options:

:labels
:reviewers
:no_open_pr


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

def execute(
  title, description, labels: nil, milestone: nil, reviewers: nil,
  no_open_pr: nil, automated_mode: false, **
)
  ensure_clean_tree if automated_mode

  selected_labels, selected_milestone, selected_reviewers = find_and_select_attributes(labels, milestone, reviewers)

  sync_with_upstream_branch if automated_mode

  pr = create_pr(title, description)

  edit_pr(pr, selected_labels, selected_milestone, selected_reviewers)

  if no_open_pr
    @out.puts "PR address: #{pr.link}"
  else
    open_file_with_default_application(pr.link)
  end

  pr
rescue => error
  save_summary(title, description) if title
  raise
end