lib/release_tools/merge_request.rb (48 lines of code) (raw):

# frozen_string_literal: true module ReleaseTools class MergeRequest < Issuable def milestone self[:milestone] || nil end def source_branch self[:source_branch] || raise(ArgumentError, 'Please set a `source_branch`!') end def target_branch self[:target_branch] || project.default_branch end def create GitlabClient.create_merge_request(self, project_path) end def accept GitlabClient.accept_merge_request(self, project_path) end def approve GitlabClient.approve_merge_request(self, project_path) end def to_reference "#{project_path}!#{iid}" end def conflicts self[:conflicts] || nil end def conflicts? conflicts&.any? end def detailed_merge_status remote_issuable&.detailed_merge_status end def merge_when_pipeline_succeeds? !!remote_issuable&.merge_when_pipeline_succeeds end def remote_issuable @remote_issuable ||= GitlabClient .merge_requests(project_path, state: 'opened', source_branch: source_branch) .first end def project_path project.path end # Merge request details returned by the MR API contain a web_url # attribute, so we often call `web_url` when we want the URL of the # merge request. def web_url self[:web_url] || url end end end