class Gitx::Cli::ReleaseCommand

Public Instance Methods

release(branch = nil) click to toggle source
# File lib/gitx/cli/release_command.rb, line 13
def release(branch = nil)
  branch ||= current_branch.name

  return unless yes?("Release #{branch} to #{config.base_branch}? (y/n)", :green)

  assert_not_protected_branch!(branch, 'release')
  checkout_branch(branch)
  run_git_cmd 'update'

  pull_request = find_or_create_pull_request(branch)

  if (label = config.release_label)
    label_pull_request pull_request, label
  else
    return unless confirm_branch_status?(branch)
    checkout_branch config.base_branch
    run_git_cmd 'pull', 'origin', config.base_branch
    run_git_cmd 'merge', '--no-ff', '--message', commit_message(branch, pull_request), branch
    run_git_cmd 'push', 'origin', 'HEAD'
  end

  after_release
end

Private Instance Methods

after_release() click to toggle source
# File lib/gitx/cli/release_command.rb, line 54
def after_release
  after_release_scripts = config.after_release_scripts.dup
  after_release_scripts << 'git cleanup' if options[:cleanup]
  after_release_scripts.each do |cmd|
    run_cmd cmd
  end
end
commit_message(branch, pull_request) click to toggle source
# File lib/gitx/cli/release_command.rb, line 39
def commit_message(branch, pull_request)
  message = "[gitx] Release #{branch} to #{config.base_branch}"
  message += "\n\nConnected to ##{pull_request.number}"
  message
end
confirm_branch_status?(branch) click to toggle source
# File lib/gitx/cli/release_command.rb, line 45
def confirm_branch_status?(branch)
  status = branch_status(branch)
  if status == 'success'
    true
  else
    yes?("Branch status is currently: #{status}.  Proceed with release? (y/n)", :red)
  end
end