forked from rails/rails
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrelease.rb
More file actions
53 lines (40 loc) · 1.25 KB
/
release.rb
File metadata and controls
53 lines (40 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# frozen_string_literal: true
require "releaser"
root = File.expand_path("..", __dir__)
version = File.read("#{root}/RAILS_VERSION").strip
releaser = Releaser.new(root, version)
module Announcement
class Version
def initialize(version)
@version, @gem_version = version, Gem::Version.new(version)
end
def to_s
@version
end
def previous
@gem_version.segments[0, 3].tap { |v| v[2] -= 1 }.join(".")
end
def major_or_security?
@gem_version.segments[2].zero? || @gem_version.segments[3].is_a?(Integer)
end
def rc?
@version.include?("rc")
end
end
end
task :announce do
Dir.chdir("pkg/") do
versions = ENV["VERSIONS"] ? ENV["VERSIONS"].split(",") : [ releaser.version ]
versions = versions.sort.map { |v| Announcement::Version.new(v) }
raise "Only valid for patch releases" if versions.any?(&:major_or_security?)
if versions.any?(&: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
end
require "erb"
template = File.read("../tasks/release_announcement_draft.erb")
puts ERB.new(template, trim_mode: "<>").result(binding)
end
end