Class: Dependabot::PullRequestCreator

Inherits:
Object
  • Object
show all
Defined in:
lib/dependabot/pull_request_creator.rb,
lib/dependabot/pull_request_creator/azure.rb,
lib/dependabot/pull_request_creator/github.rb,
lib/dependabot/pull_request_creator/gitlab.rb,
lib/dependabot/pull_request_creator/labeler.rb,
lib/dependabot/pull_request_creator/message.rb,
lib/dependabot/pull_request_creator/bitbucket.rb,
lib/dependabot/pull_request_creator/codecommit.rb,
lib/dependabot/pull_request_creator/branch_namer.rb,
lib/dependabot/pull_request_creator/commit_signer.rb,
lib/dependabot/pull_request_creator/message_builder.rb,
lib/dependabot/pull_request_creator/pr_name_prefixer.rb,
lib/dependabot/pull_request_creator/branch_namer/base.rb,
lib/dependabot/pull_request_creator/branch_namer/solo_strategy.rb,
lib/dependabot/pull_request_creator/message_builder/issue_linker.rb,
lib/dependabot/pull_request_creator/message_builder/metadata_presenter.rb,
lib/dependabot/pull_request_creator/branch_namer/dependency_group_strategy.rb,
lib/dependabot/pull_request_creator/message_builder/link_and_mention_sanitizer.rb

Defined Under Namespace

Classes: AnnotationError, Azure, BaseCommitNotUpToDate, Bitbucket, BranchNamer, Codecommit, CommitSigner, Github, Gitlab, Labeler, Message, MessageBuilder, NoHistoryInCommon, PrNamePrefixer, RepoArchived, RepoDisabled, RepoNotFound, UnexpectedError, UnmergedPRExists

Constant Summary collapse

DEFAULT_GITHUB_REDIRECTION_SERVICE =

Dependabot programmatically creates PRs which often include a large number of links to objects on ‘github.com`. GitHub hydrates these into rich links that leave a ’mention’ on target Issues/Pull Requests.

Due to the volume and nature of Dependabot PRs, these mentions are not useful and can overwhelm maintainers, so we use a redirection service to avoid enrichment.

If you wish to disable this behaviour when using Dependabot Core directly, pass a nil value when initialising this class.

"redirect.github.com"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source:, base_commit:, dependencies:, files:, credentials:, pr_message_header: nil, pr_message_footer: nil, custom_labels: nil, author_details: nil, signature_key: nil, commit_message_options: {}, vulnerabilities_fixed: {}, reviewers: nil, assignees: nil, milestone: nil, branch_name_separator: "/", branch_name_prefix: "dependabot", branch_name_max_length: nil, label_language: false, automerge_candidate: false, github_redirection_service: DEFAULT_GITHUB_REDIRECTION_SERVICE, custom_headers: nil, require_up_to_date_base: false, provider_metadata: {}, message: nil, dependency_group: nil, pr_message_max_length: nil, pr_message_encoding: nil) ⇒ PullRequestCreator

Returns a new instance of PullRequestCreator.



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/dependabot/pull_request_creator.rb', line 62

def initialize(source:, base_commit:, dependencies:, files:, credentials:,
               pr_message_header: nil, pr_message_footer: nil,
               custom_labels: nil, author_details: nil, signature_key: nil,
               commit_message_options: {}, vulnerabilities_fixed: {},
               reviewers: nil, assignees: nil, milestone: nil,
               branch_name_separator: "/", branch_name_prefix: "dependabot",
               branch_name_max_length: nil, label_language: false,
               automerge_candidate: false,
               github_redirection_service: DEFAULT_GITHUB_REDIRECTION_SERVICE,
               custom_headers: nil, require_up_to_date_base: false,
               provider_metadata: {}, message: nil, dependency_group: nil, pr_message_max_length: nil,
               pr_message_encoding: nil)
  @dependencies               = dependencies
  @source                     = source
  @base_commit                = base_commit
  @files                      = files
  @credentials                = credentials
  @pr_message_header          = pr_message_header
  @pr_message_footer          = pr_message_footer
  @author_details             = author_details
  @signature_key              = signature_key
  @commit_message_options     = commit_message_options
  @custom_labels              = custom_labels
  @reviewers                  = reviewers
  @assignees                  = assignees
  @milestone                  = milestone
  @vulnerabilities_fixed      = vulnerabilities_fixed
  @branch_name_separator      = branch_name_separator
  @branch_name_prefix         = branch_name_prefix
  @branch_name_max_length     = branch_name_max_length
  @label_language             = label_language
  @automerge_candidate        = automerge_candidate
  @github_redirection_service = github_redirection_service
  @custom_headers             = custom_headers
  @require_up_to_date_base    = require_up_to_date_base
  @provider_metadata          = 
  @message                    = message
  @dependency_group           = dependency_group
  @pr_message_max_length      = pr_message_max_length
  @pr_message_encoding        = pr_message_encoding

  check_dependencies_have_previous_version
end

Instance Attribute Details

#assigneesObject (readonly)

Returns the value of attribute assignees.



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

def assignees
  @assignees
end

#author_detailsObject (readonly)

Returns the value of attribute author_details.



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

def author_details
  @author_details
end

#base_commitObject (readonly)

Returns the value of attribute base_commit.



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

def base_commit
  @base_commit
end

#branch_name_max_lengthObject (readonly)

Returns the value of attribute branch_name_max_length.



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

def branch_name_max_length
  @branch_name_max_length
end

#branch_name_prefixObject (readonly)

Returns the value of attribute branch_name_prefix.



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

def branch_name_prefix
  @branch_name_prefix
end

#branch_name_separatorObject (readonly)

Returns the value of attribute branch_name_separator.



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

def branch_name_separator
  @branch_name_separator
end

#commit_message_optionsObject (readonly)

Returns the value of attribute commit_message_options.



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

def commit_message_options
  @commit_message_options
end

#credentialsObject (readonly)

Returns the value of attribute credentials.



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

def credentials
  @credentials
end

#custom_headersObject (readonly)

Returns the value of attribute custom_headers.



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

def custom_headers
  @custom_headers
end

#custom_labelsObject (readonly)

Returns the value of attribute custom_labels.



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

def custom_labels
  @custom_labels
end

#dependenciesObject (readonly)

Returns the value of attribute dependencies.



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

def dependencies
  @dependencies
end

#dependency_groupObject (readonly)

Returns the value of attribute dependency_group.



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

def dependency_group
  @dependency_group
end

#filesObject (readonly)

Returns the value of attribute files.



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

def files
  @files
end

#github_redirection_serviceObject (readonly)

Returns the value of attribute github_redirection_service.



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

def github_redirection_service
  @github_redirection_service
end

#milestoneObject (readonly)

Returns the value of attribute milestone.



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

def milestone
  @milestone
end

#pr_message_encodingObject (readonly)

Returns the value of attribute pr_message_encoding.



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

def pr_message_encoding
  @pr_message_encoding
end

Returns the value of attribute pr_message_footer.



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

def pr_message_footer
  @pr_message_footer
end

#pr_message_headerObject (readonly)

Returns the value of attribute pr_message_header.



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

def pr_message_header
  @pr_message_header
end

#pr_message_max_lengthObject (readonly)

Returns the value of attribute pr_message_max_length.



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

def pr_message_max_length
  @pr_message_max_length
end

#provider_metadataObject (readonly)

Returns the value of attribute provider_metadata.



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

def 
  @provider_metadata
end

#reviewersObject (readonly)

Returns the value of attribute reviewers.



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

def reviewers
  @reviewers
end

#signature_keyObject (readonly)

Returns the value of attribute signature_key.



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

def signature_key
  @signature_key
end

#sourceObject (readonly)

Returns the value of attribute source.



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

def source
  @source
end

#vulnerabilities_fixedObject (readonly)

Returns the value of attribute vulnerabilities_fixed.



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

def vulnerabilities_fixed
  @vulnerabilities_fixed
end

Instance Method Details

#check_dependencies_have_previous_versionObject



106
107
108
109
110
111
112
# File 'lib/dependabot/pull_request_creator.rb', line 106

def check_dependencies_have_previous_version
  return if dependencies.all? { |d| requirements_changed?(d) }
  return if dependencies.all?(&:previous_version)

  raise "Dependencies must have a previous version or changed " \
        "requirement to have a pull request created for them!"
end

#createObject



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

def create
  case source.provider
  when "github" then github_creator.create
  when "gitlab" then gitlab_creator.create
  when "azure" then azure_creator.create
  when "bitbucket" then bitbucket_creator.create
  when "codecommit" then codecommit_creator.create
  else raise "Unsupported provider #{source.provider}"
  end
end