From d7c8d34cc45568468c5f1ad2c054f6e78ae9860f Mon Sep 17 00:00:00 2001 From: Matthew Draper Date: Thu, 1 Dec 2016 03:58:22 +1030 Subject: Add a task to build a draft of the release announcement --- tasks/release.rb | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) (limited to 'tasks') diff --git a/tasks/release.rb b/tasks/release.rb index 1e2873b7f3..25269fb7db 100644 --- a/tasks/release.rb +++ b/tasks/release.rb @@ -1,8 +1,10 @@ FRAMEWORKS = %w( activesupport activemodel activerecord actionview actionpack activejob actionmailer actioncable railties ) +FRAMEWORK_NAMES = Hash.new { |h, k| k.split(/(?<=active|action)/).map(&:capitalize).join(" ") } root = File.expand_path("../../", __FILE__) version = File.read("#{root}/RAILS_VERSION").strip tag = "v#{version}" +gem_version = Gem::Version.new(version) directory "pkg" @@ -177,3 +179,70 @@ namespace :all do task release: %w(ensure_clean_state build bundle commit tag push) end + +task :announce do + Dir.chdir("pkg/") do + if gem_version.segments[2] == 0 || gem_version.segments[3].is_a?(Integer) + # Not major releases, and not security releases + raise "Only valid for patch releases" + end + + sums = "$ shasum *-#{version}.gem\n" + `shasum *-#{version}.gem` + + puts "Hi everyone," + puts + + puts "I am happy to announce that Rails #{version} has been released." + puts + + previous_version = gem_version.segments[0, 3] + previous_version[2] -= 1 + previous_version = previous_version.join(".") + + if version =~ /rc/ + require "date" + future_date = Date.today + 5 + future_date += 1 while future_date.saturday? || future_date.sunday? + + github_user = `git config github.user`.chomp + + puts <