class Dependabot::PullRequestCreator::Bitbucket

Attributes

author_details[R]
base_commit[R]
branch_name[R]
commit_message[R]
credentials[R]
files[R]
labeler[R]
pr_description[R]
pr_name[R]
source[R]
work_item[R]

Public Class Methods

new(source:, branch_name:, base_commit:, credentials:, files:, commit_message:, pr_description:, pr_name:, author_details:, labeler: nil, work_item: nil) click to toggle source
# File lib/dependabot/pull_request_creator/bitbucket.rb, line 13
def initialize(source:, branch_name:, base_commit:, credentials:,
               files:, commit_message:, pr_description:, pr_name:,
               author_details:, labeler: nil, work_item: nil)
  @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
  @labeler        = labeler
  @work_item      = work_item
end

Public Instance Methods

create() click to toggle source
# File lib/dependabot/pull_request_creator/bitbucket.rb, line 29
def create
  return if branch_exists? && pull_request_exists?

  # FIXME: Copied from Azure, but not verified whether this is true
  # For Bitbucket we create or update a branch in the same request as creating
  # a commit (so we don't need create or update branch logic here)
  create_commit

  create_pull_request
end

Private Instance Methods

bitbucket_client_for_source() click to toggle source
# File lib/dependabot/pull_request_creator/bitbucket.rb, line 42
def bitbucket_client_for_source
  @bitbucket_client_for_source ||=
    Dependabot::Clients::Bitbucket.for_source(
      source: source,
      credentials: credentials
    )
end
branch_exists?() click to toggle source
# File lib/dependabot/pull_request_creator/bitbucket.rb, line 50
def branch_exists?
  bitbucket_client_for_source.branch(source.repo, branch_name)
rescue Clients::Bitbucket::NotFound
  false
end
create_commit() click to toggle source
# File lib/dependabot/pull_request_creator/bitbucket.rb, line 64
def create_commit
  author = author_details&.slice(:name, :email)
  author = nil unless author&.any?

  bitbucket_client_for_source.create_commit(
    source.repo,
    branch_name,
    base_commit,
    commit_message,
    files,
    author
  )
end
create_pull_request() click to toggle source
# File lib/dependabot/pull_request_creator/bitbucket.rb, line 78
def create_pull_request
  bitbucket_client_for_source.create_pull_request(
    source.repo,
    pr_name,
    branch_name,
    source.branch || default_branch,
    pr_description,
    labeler&.labels_for_pr,
    work_item
  )
end
default_branch() click to toggle source
# File lib/dependabot/pull_request_creator/bitbucket.rb, line 90
def default_branch
  @default_branch ||=
    bitbucket_client_for_source.fetch_default_branch(source.repo)
end
pull_request_exists?() click to toggle source
# File lib/dependabot/pull_request_creator/bitbucket.rb, line 56
def pull_request_exists?
  bitbucket_client_for_source.pull_requests(
    source.repo,
    branch_name,
    source.branch || default_branch
  ).any?
end