Class: GitlabMrRelease::Project
- Inherits:
-
Object
- Object
- GitlabMrRelease::Project
- Defined in:
- lib/gitlab_mr_release/project.rb
Instance Method Summary collapse
- #create_merge_request(source_branch:, target_branch:, title:, template:, labels:) ⇒ Object
- #generate_description(iids, template) ⇒ Object
-
#initialize(api_endpoint:, private_token:, project_name:) ⇒ Project
constructor
A new instance of Project.
-
#merge_request(iid) ⇒ Object
find MergeRequest with iid.
-
#merge_request_iids_between(from, to) ⇒ Array<Integer>
find merge requests between from…to.
- #web_url ⇒ Object
Constructor Details
#initialize(api_endpoint:, private_token:, project_name:) ⇒ Project
Returns a new instance of Project.
8 9 10 11 12 13 14 |
# File 'lib/gitlab_mr_release/project.rb', line 8 def initialize(api_endpoint:, private_token:, project_name:) Gitlab.configure do |config| config.endpoint = api_endpoint config.private_token = private_token end @project_name = project_name end |
Instance Method Details
#create_merge_request(source_branch:, target_branch:, title:, template:, labels:) ⇒ Object
44 45 46 47 48 49 50 51 52 53 |
# File 'lib/gitlab_mr_release/project.rb', line 44 def create_merge_request(source_branch:, target_branch:, title:, template:, labels:) iids = merge_request_iids_between(target_branch, source_branch) = { source_branch: source_branch, target_branch: target_branch, description: generate_description(iids, template), labels: labels, } Gitlab.create_merge_request(escaped_project_name, title, ) end |
#generate_description(iids, template) ⇒ Object
39 40 41 42 |
# File 'lib/gitlab_mr_release/project.rb', line 39 def generate_description(iids, template) merge_requests = iids.map { |iid| merge_request(iid) } ERB.new(template, nil, "-").result(binding).strip end |
#merge_request(iid) ⇒ Object
find MergeRequest with iid
33 34 35 36 37 |
# File 'lib/gitlab_mr_release/project.rb', line 33 def merge_request(iid) mr = Gitlab.merge_requests(escaped_project_name, iid: iid).first assert_merge_request_iid(mr, iid) if mr mr end |
#merge_request_iids_between(from, to) ⇒ Array<Integer>
find merge requests between from…to
24 25 26 27 28 29 30 |
# File 'lib/gitlab_mr_release/project.rb', line 24 def merge_request_iids_between(from, to) commits = Gitlab.repo_compare(escaped_project_name, from, to).commits commits.map do |commit| commit["message"] =~ /^Merge branch .*See merge request \!(\d+)$/m $1 end.compact.map(&:to_i) end |
#web_url ⇒ Object
16 17 18 |
# File 'lib/gitlab_mr_release/project.rb', line 16 def web_url @web_url ||= Gitlab.project(escaped_project_name).web_url end |