summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-02-08 21:10:01 -0600
committerSamuel Giddins <segiddins@segiddins.me>2017-02-08 21:10:01 -0600
commit03c8f40ee7813c642620dd10cdc686d6a990c26c (patch)
tree896d29d86a4159dcf691277963aa2422d205231c
parentd35a85385e9ddd56aeaabfae6952b1e41aee2992 (diff)
downloadbundler-seg-patch-release-milestone.tar.gz
[Release] Pull PRs to backport from GH milestoneseg-patch-release-milestone
-rw-r--r--task/release.rake24
1 files changed, 22 insertions, 2 deletions
diff --git a/task/release.rake b/task/release.rake
index c15c312994..03f1fd617d 100644
--- a/task/release.rake
+++ b/task/release.rake
@@ -10,10 +10,18 @@ namespace :release do
abort
end
- desc "Make a patch release with the specified PRs from master"
+ def gh_api_request(opts)
+ require "net/http"
+ require "json"
+ host = opts.fetch(:host) { "https://api.github.com/" }
+ path = opts.fetch(:path)
+ response = Net::HTTP.get(URI.join(host, path))
+ JSON.parse(response)
+ end
+
+ desc "Make a patch release with the PRs from master in the patch milestone"
task :patch, :version do |_t, args|
version = args.version
- prs = args.extras
version ||= begin
version = BUNDLER_SPEC.version
@@ -28,6 +36,18 @@ namespace :release do
confirm "You are about to release #{version}, currently #{BUNDLER_SPEC.version}"
+ milestones = gh_api_request(:path => "repos/bundler/bundler/milestones?state=open")
+ unless patch_milestone = milestones.find {|m| m["title"] == version }
+ abort "failed to find #{version} milestone on GitHub"
+ end
+ prs = gh_api_request(:path => "repos/bundler/bundler/pulls?milestone=#{patch_milestone["number"]}")
+ prs.map! do |pr|
+ unless pr["merged_at"]
+ abort "https://github.com/bundler/bundler/pull/#{pr["number"]} hasn't been merged yet!"
+ end
+ pr["number"]
+ end
+
version_file = "lib/bundler/version.rb"
version_contents = File.read(version_file)
unless version_contents.sub!(/^(\s*VERSION = )"#{Gem::Version::VERSION_PATTERN}"/, "\\1#{version.to_s.dump}")