class Dependabot::PullRequestUpdater::Azure
Constants
- OBJECT_ID_FOR_BRANCH_DELETE
Attributes
base_commit[R]
credentials[R]
files[R]
old_commit[R]
pull_request_number[R]
source[R]
Public Class Methods
new(source:, files:, base_commit:, old_commit:, credentials:, pull_request_number:)
click to toggle source
# File lib/dependabot/pull_request_updater/azure.rb, line 16 def initialize(source:, files:, base_commit:, old_commit:, credentials:, pull_request_number:) @source = source @files = files @base_commit = base_commit @old_commit = old_commit @credentials = credentials @pull_request_number = pull_request_number end
Public Instance Methods
update()
click to toggle source
# File lib/dependabot/pull_request_updater/azure.rb, line 26 def update return unless pull_request_exists? && source_branch_exists? update_source_branch end
Private Instance Methods
azure_client_for_source()
click to toggle source
# File lib/dependabot/pull_request_updater/azure.rb, line 34 def azure_client_for_source @azure_client_for_source ||= Dependabot::Clients::Azure.for_source( source: source, credentials: credentials ) end
commit_being_updated()
click to toggle source
For updating source branch, we require the latest commit for the source branch.
# File lib/dependabot/pull_request_updater/azure.rb, line 102 def commit_being_updated @commit_being_updated ||= azure_client_for_source.commits(source_branch_name).first end
commit_message()
click to toggle source
# File lib/dependabot/pull_request_updater/azure.rb, line 111 def commit_message commit_being_updated.fetch("comment") end
create_temp_branch()
click to toggle source
# File lib/dependabot/pull_request_updater/azure.rb, line 76 def create_temp_branch response = azure_client_for_source.create_commit( temp_branch_name, base_commit, commit_message, files, nil ) JSON.parse(response.body).fetch("refUpdates").first.fetch("newObjectId") end
old_source_branch_commit()
click to toggle source
# File lib/dependabot/pull_request_updater/azure.rb, line 107 def old_source_branch_commit commit_being_updated.fetch("commitId") end
pull_request()
click to toggle source
# File lib/dependabot/pull_request_updater/azure.rb, line 67 def pull_request @pull_request ||= azure_client_for_source.pull_request(pull_request_number.to_s) end
pull_request_exists?()
click to toggle source
# File lib/dependabot/pull_request_updater/azure.rb, line 42 def pull_request_exists? pull_request rescue Dependabot::Clients::Azure::NotFound false end
source_branch_exists?()
click to toggle source
# File lib/dependabot/pull_request_updater/azure.rb, line 48 def source_branch_exists? azure_client_for_source.branch(source_branch_name) rescue Dependabot::Clients::Azure::NotFound false end
source_branch_name()
click to toggle source
# File lib/dependabot/pull_request_updater/azure.rb, line 72 def source_branch_name @source_branch_name ||= pull_request&.fetch("sourceRefName")&.gsub("refs/heads/", "") end
temp_branch_name()
click to toggle source
# File lib/dependabot/pull_request_updater/azure.rb, line 88 def temp_branch_name @temp_branch_name ||= "#{source_branch_name}-temp-#{SecureRandom.uuid[0..6]}" end
update_branch(branch_name, old_commit, new_commit)
click to toggle source
# File lib/dependabot/pull_request_updater/azure.rb, line 93 def update_branch(branch_name, old_commit, new_commit) azure_client_for_source.update_ref( branch_name, old_commit, new_commit ) end
update_source_branch()
click to toggle source
Currently the PR diff in ADO shows difference in commits instead of actual diff in files. This workaround is done to get the target branch commit history on the source branch alongwith file changes
# File lib/dependabot/pull_request_updater/azure.rb, line 56 def update_source_branch # 1) Push the file changes to a newly created temporary branch (from base commit) new_commit = create_temp_branch # 2) Update PR source branch to point to the temp branch head commit. response = update_branch(source_branch_name, old_source_branch_commit, new_commit) # 3) Delete temp branch update_branch(temp_branch_name, new_commit, OBJECT_ID_FOR_BRANCH_DELETE) raise PullRequestUpdateFailed, response.fetch("customMessage", nil) unless response.fetch("success", false) end