class Dependabot::PullRequestCreator::Gitlab
Attributes
approvers[R]
assignees[R]
base_commit[R]
branch_name[R]
commit_message[R]
credentials[R]
files[R]
labeler[R]
milestone[R]
pr_description[R]
pr_name[R]
source[R]
Public Class Methods
new(source:, branch_name:, base_commit:, credentials:, files:, commit_message:, pr_description:, pr_name:, author_details:, labeler:, approvers:, assignees:, milestone:)
click to toggle source
# File lib/dependabot/pull_request_creator/gitlab.rb, line 15 def initialize(source:, branch_name:, base_commit:, credentials:, files:, commit_message:, pr_description:, pr_name:, author_details:, labeler:, approvers:, assignees:, milestone:) @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 @approvers = approvers @assignees = assignees @milestone = milestone end
Public Instance Methods
create()
click to toggle source
# File lib/dependabot/pull_request_creator/gitlab.rb, line 34 def create return if branch_exists? && merge_request_exists? if branch_exists? create_commit unless commit_exists? else create_branch create_commit end labeler.create_default_labels_if_required merge_request = create_merge_request return unless merge_request annotate_merge_request(merge_request) merge_request end
Private Instance Methods
add_approvers_to_merge_request(merge_request)
click to toggle source
# File lib/dependabot/pull_request_creator/gitlab.rb, line 154 def add_approvers_to_merge_request(merge_request) approvers_hash = approvers.keys.map { |k| [k.to_sym, approvers[k]] }.to_h gitlab_client_for_source.edit_merge_request_approvers( source.repo, merge_request.iid, approver_ids: approvers_hash[:approvers], approver_group_ids: approvers_hash[:group_approvers] ) end
annotate_merge_request(merge_request)
click to toggle source
# File lib/dependabot/pull_request_creator/gitlab.rb, line 150 def annotate_merge_request(merge_request) add_approvers_to_merge_request(merge_request) if approvers&.any? end
branch_exists?()
click to toggle source
# File lib/dependabot/pull_request_creator/gitlab.rb, line 63 def branch_exists? @branch_ref ||= gitlab_client_for_source.branch(source.repo, branch_name) true rescue ::Gitlab::Error::NotFound false end
commit_exists?()
click to toggle source
# File lib/dependabot/pull_request_creator/gitlab.rb, line 71 def commit_exists? @commits ||= gitlab_client_for_source.commits(source.repo, ref_name: branch_name) @commits.first.message == commit_message end
create_branch()
click to toggle source
# File lib/dependabot/pull_request_creator/gitlab.rb, line 86 def create_branch gitlab_client_for_source.create_branch( source.repo, branch_name, base_commit ) end
create_commit()
click to toggle source
# File lib/dependabot/pull_request_creator/gitlab.rb, line 105 def create_commit return create_submodule_update_commit if files.count == 1 && files.first.type == "submodule" actions = files.map do |file| { action: file_action(file), file_path: file.type == "symlink" ? file.symlink_target : file.path, content: file.content } end gitlab_client_for_source.create_commit( source.repo, branch_name, commit_message, actions ) end
create_merge_request()
click to toggle source
# File lib/dependabot/pull_request_creator/gitlab.rb, line 136 def create_merge_request gitlab_client_for_source.create_merge_request( source.repo, pr_name, source_branch: branch_name, target_branch: source.branch || default_branch, description: pr_description, remove_source_branch: true, assignee_ids: assignees, labels: labeler.labels_for_pr.join(","), milestone_id: milestone ) end
create_submodule_update_commit()
click to toggle source
# File lib/dependabot/pull_request_creator/gitlab.rb, line 124 def create_submodule_update_commit file = files.first gitlab_client_for_source.edit_submodule( source.repo, file.path.gsub(%r{^/}, ""), branch: branch_name, commit_sha: file.content, commit_message: commit_message ) end
default_branch()
click to toggle source
# File lib/dependabot/pull_request_creator/gitlab.rb, line 166 def default_branch @default_branch ||= gitlab_client_for_source.project(source.repo).default_branch end
file_action(file)
click to toggle source
@param [DependencyFile] file
# File lib/dependabot/pull_request_creator/gitlab.rb, line 95 def file_action(file) if file.operation == Dependabot::DependencyFile::Operation::DELETE "delete" elsif file.operation == Dependabot::DependencyFile::Operation::CREATE "create" else "update" end end
gitlab_client_for_source()
click to toggle source
# File lib/dependabot/pull_request_creator/gitlab.rb, line 55 def gitlab_client_for_source @gitlab_client_for_source ||= Dependabot::Clients::GitlabWithRetries.for_source( source: source, credentials: credentials ) end
merge_request_exists?()
click to toggle source
# File lib/dependabot/pull_request_creator/gitlab.rb, line 77 def merge_request_exists? gitlab_client_for_source.merge_requests( source.repo, source_branch: branch_name, target_branch: source.branch || default_branch, state: "all" ).any? end