53 lines
1.3 KiB
Ruby
53 lines
1.3 KiB
Ruby
require 'octokit'
|
|
|
|
def repo_slug
|
|
url_parts = `git remote get-url origin`.chomp.split(%r{/|:})
|
|
last_two_parts = url_parts[-2..-1].join('/')
|
|
last_two_parts.gsub(/\.git$/, '')
|
|
end
|
|
|
|
def github_client
|
|
Octokit::Client.new(:netrc => true)
|
|
end
|
|
|
|
namespace :github do
|
|
# rake github:create_release_pr[version]
|
|
task :create_release_pr, [:version] do |_, args|
|
|
version = args[:version]
|
|
branch = release_branch(version)
|
|
|
|
title = "Release #{version}"
|
|
body = <<~BODY
|
|
This PR prepares the release for version #{version}.
|
|
|
|
Once the PR is merged into master, run `bundle exec rake release:finish` to tag and push to trunk.
|
|
BODY
|
|
|
|
header "Opening PR"
|
|
res = github_client.create_pull_request(repo_slug, "master", branch, title, body)
|
|
info "Pull request created: #{res['html_url']}"
|
|
end
|
|
|
|
# rake github:tag
|
|
task :tag do
|
|
tag = current_pod_version
|
|
sh("git", "tag", tag)
|
|
sh("git", "push", "origin", tag)
|
|
end
|
|
|
|
# rake github:create_release
|
|
task :create_release do
|
|
tag_name = current_pod_version
|
|
title = tag_name
|
|
body = changelog_first_section()
|
|
res = github_client.create_release(repo_slug, tag_name, name: title, body: body)
|
|
info "GitHub Release created: #{res['html_url']}"
|
|
end
|
|
|
|
# rake github:pull_master
|
|
task :pull_master do
|
|
sh("git", "switch", "master")
|
|
sh("git", "pull")
|
|
end
|
|
end
|