diff options
author | Tom Duffield <tom@chef.io> | 2016-11-21 08:01:32 -0600 |
---|---|---|
committer | Tom Duffield <tom@chef.io> | 2016-11-21 08:05:01 -0600 |
commit | 072e1f317549fa4df78ef9b7a72db090a164bcb7 (patch) | |
tree | 700016de4fa08f0665431630e8e744a92045bbb7 /tasks/announce.rb | |
parent | c2dc84fd617a842676c4c2c684551741ade3a757 (diff) | |
download | chef-072e1f317549fa4df78ef9b7a72db090a164bcb7.tar.gz |
Add rake task for generator release annoucnements
To ensure consistency, and to let users get the information they
want/need at a glance, we're introducing release announcement
templates. The Chef release team will use these tasks to generate the
release announcements before posting them to Discourse.
Signed-off-by: Tom Duffield <tom@chef.io>
Diffstat (limited to 'tasks/announce.rb')
-rw-r--r-- | tasks/announce.rb | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/tasks/announce.rb b/tasks/announce.rb new file mode 100644 index 0000000000..854c53a21b --- /dev/null +++ b/tasks/announce.rb @@ -0,0 +1,57 @@ +# +# Copyright:: Copyright (c) 2016 Chef Software Inc. +# License:: Apache License, Version 2.0 +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +require 'date' +require 'erb' + +class ReleaseAnnouncement + include ERB::Util + attr_accessor :type, :version, :date, :release_notes + + def initialize(version, date, type) + @version = version + @date = Date.parse(date) unless date.nil? + @release_notes = release_notes_from_file + @type = type + end + + def render + puts "-" * 30 + puts ERB.new(template_for(@type)).result(binding) + puts "-" * 30 + end + + def template_for(type) + File.read("tasks/templates/#{type}.md.erb") + end + + def release_notes_from_file + File.read("RELEASE_NOTES.md").match(/^# Chef Client Release Notes 12.17:\n\n(.*)/m)[1] + end +end + +namespace :announce do + desc "Generate the Prerelease Announcement (version: X.Y.Z, release_date: YYYY-MM-DD)" + task :prerelease, :version, :release_date do |t, args| + ReleaseAnnouncement.new(args[:version], args[:release_date], "prerelease").render + end + + desc "Generate the Release Announcement (version: X.Y.Z)" + task :release, :version do |t, args| + ReleaseAnnouncement.new(args[:version], nil, "release").render + end +end |