Class: Dependabot::PullRequestCreator::Github

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/dependabot/pull_request_creator/github.rb

Overview

rubocop:disable Metrics/ClassLength

Constant Summary collapse

PR_DESCRIPTION_MAX_LENGTH =

GitHub limits PR descriptions to a max of 65,536 characters: github.com/orgs/community/discussions/27190#discussioncomment-3726017

65_535

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source:, branch_name:, base_commit:, credentials:, files:, commit_message:, pr_description:, pr_name:, author_details:, signature_key:, custom_headers:, labeler:, reviewers:, assignees:, milestone:, require_up_to_date_base:) ⇒ Github

Returns a new instance of Github.



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/dependabot/pull_request_creator/github.rb', line 88

def initialize(source:, branch_name:, base_commit:, credentials:,
               files:, commit_message:, pr_description:, pr_name:,
               author_details:, signature_key:, custom_headers:,
               labeler:, reviewers:, assignees:, milestone:,
               require_up_to_date_base:)
  @source                  = source
  @branch_name             = branch_name
  @base_commit             = base_commit
  @credentials             = credentials
  @files                   = files
  @commit_message          = commit_message
  @pr_description          = pr_description
  @pr_name                 = pr_name
  @author_details          = author_details
  @signature_key           = signature_key
  @custom_headers          = custom_headers
  @labeler                 = labeler
  @reviewers               = reviewers
  @assignees               = assignees
  @milestone               = milestone
  @require_up_to_date_base = require_up_to_date_base
end

Instance Attribute Details

#assigneesObject (readonly)

Returns the value of attribute assignees.



62
63
64
# File 'lib/dependabot/pull_request_creator/github.rb', line 62

def assignees
  @assignees
end

#author_detailsObject (readonly)

Returns the value of attribute author_details.



47
48
49
# File 'lib/dependabot/pull_request_creator/github.rb', line 47

def author_details
  @author_details
end

#base_commitObject (readonly)

Returns the value of attribute base_commit.



29
30
31
# File 'lib/dependabot/pull_request_creator/github.rb', line 29

def base_commit
  @base_commit
end

#branch_nameObject (readonly)

Returns the value of attribute branch_name.



26
27
28
# File 'lib/dependabot/pull_request_creator/github.rb', line 26

def branch_name
  @branch_name
end

#commit_messageObject (readonly)

Returns the value of attribute commit_message.



44
45
46
# File 'lib/dependabot/pull_request_creator/github.rb', line 44

def commit_message
  @commit_message
end

#credentialsObject (readonly)

Returns the value of attribute credentials.



32
33
34
# File 'lib/dependabot/pull_request_creator/github.rb', line 32

def credentials
  @credentials
end

#custom_headersObject (readonly)

Returns the value of attribute custom_headers.



53
54
55
# File 'lib/dependabot/pull_request_creator/github.rb', line 53

def custom_headers
  @custom_headers
end

#filesObject (readonly)

Returns the value of attribute files.



35
36
37
# File 'lib/dependabot/pull_request_creator/github.rb', line 35

def files
  @files
end

#labelerObject (readonly)

Returns the value of attribute labeler.



56
57
58
# File 'lib/dependabot/pull_request_creator/github.rb', line 56

def labeler
  @labeler
end

#milestoneObject (readonly)

Returns the value of attribute milestone.



65
66
67
# File 'lib/dependabot/pull_request_creator/github.rb', line 65

def milestone
  @milestone
end

#pr_descriptionObject (readonly)

Returns the value of attribute pr_description.



38
39
40
# File 'lib/dependabot/pull_request_creator/github.rb', line 38

def pr_description
  @pr_description
end

#pr_nameObject (readonly)

Returns the value of attribute pr_name.



41
42
43
# File 'lib/dependabot/pull_request_creator/github.rb', line 41

def pr_name
  @pr_name
end

#reviewersObject (readonly)

Returns the value of attribute reviewers.



59
60
61
# File 'lib/dependabot/pull_request_creator/github.rb', line 59

def reviewers
  @reviewers
end

#signature_keyObject (readonly)

Returns the value of attribute signature_key.



50
51
52
# File 'lib/dependabot/pull_request_creator/github.rb', line 50

def signature_key
  @signature_key
end

#sourceObject (readonly)

Returns the value of attribute source.



23
24
25
# File 'lib/dependabot/pull_request_creator/github.rb', line 23

def source
  @source
end

Instance Method Details

#createObject



112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/dependabot/pull_request_creator/github.rb', line 112

def create
  if branch_exists?(branch_name) && unmerged_pull_request_exists?
    raise UnmergedPRExists, "PR ##{unmerged_pull_requests.first.number} already exists"
  end
  if require_up_to_date_base? && !base_commit_is_up_to_date?
    raise BaseCommitNotUpToDate, "HEAD #{head_commit} does not match base #{base_commit}"
  end

  create_annotated_pull_request
rescue AnnotationError, Octokit::Error => e
  handle_error(e)
end