class Relsr::ReleaseManager
Public Class Methods
new(repo_name:, label:, extra_branches: [], dry_run: false)
click to toggle source
# File lib/relsr/release_manager.rb, line 7 def initialize(repo_name:, label:, extra_branches: [], dry_run: false) @repo_name = repo_name @label = label @release_branch_name = Time.now.strftime('release/%Y%m%d-%H%M%S') @dry_run = dry_run @extra_branches = extra_branches Octokit.auto_paginate = true end
Public Instance Methods
create_pull_request()
click to toggle source
# File lib/relsr/release_manager.rb, line 21 def create_pull_request print_and_flush "Creating Pull Request..." unless @dry_run client.create_pull_request( @repo_name, 'master', @release_branch_name, @release_branch_name, pr_body ) end puts 'done'.green end
create_release_branch()
click to toggle source
# File lib/relsr/release_manager.rb, line 16 def create_release_branch initialize_release_branch merge_work_branches end
Private Instance Methods
branch_names()
click to toggle source
# File lib/relsr/release_manager.rb, line 68 def branch_names @branch_names ||= client.branches(@repo_name).collect { |b| b.name } end
branches_to_merge()
click to toggle source
# File lib/relsr/release_manager.rb, line 72 def branches_to_merge branches_to_merge = [] issues.each do |issue| branch_names.each do |branch| if branch.include? "##{issue.number}" branches_to_merge << branch end end end branches_to_merge + @extra_branches end
client()
click to toggle source
# File lib/relsr/release_manager.rb, line 60 def client @client ||= Octokit::Client.new(netrc: true) end
initialize_release_branch()
click to toggle source
# File lib/relsr/release_manager.rb, line 37 def initialize_release_branch print_and_flush "Creating release branch '#{@release_branch_name}' on '#{@repo_name}'..." unless @dry_run client.create_ref(@repo_name, "heads/#{@release_branch_name}", master.object.sha) end puts 'done'.green end
issues()
click to toggle source
# File lib/relsr/release_manager.rb, line 89 def issues @issues ||= client.list_issues(@repo_name, labels: @label) end
master()
click to toggle source
# File lib/relsr/release_manager.rb, line 85 def master @master ||= client.refs(@repo_name, 'heads/master') end
merge_work_branches()
click to toggle source
# File lib/relsr/release_manager.rb, line 45 def merge_work_branches branches_to_merge.each do |work_branch| print_and_flush "Merging '#{work_branch}' into release..." unless @dry_run client.merge( @repo_name, @release_branch_name, work_branch, commit_message: "Merging #{work_branch} into release" ) end puts 'done'.green end end
pr_body()
click to toggle source
# File lib/relsr/release_manager.rb, line 93 def pr_body messages = issues.collect do |issue| "Connects ##{issue.number} - #{issue.title}" end messages += @extra_branches.collect do |branch| "Merging in additional branch '#{branch}'" end messages.join("\n") end
print_and_flush(msg)
click to toggle source
# File lib/relsr/release_manager.rb, line 104 def print_and_flush(msg) print msg STDOUT.flush end
repo()
click to toggle source
# File lib/relsr/release_manager.rb, line 64 def repo @repo ||= client.repo(@repo_name) end