summaryrefslogtreecommitdiff
path: root/tasks/announce.rb
diff options
context:
space:
mode:
authorTom Duffield <tom@chef.io>2016-11-21 08:01:32 -0600
committerTom Duffield <tom@chef.io>2016-11-21 08:05:01 -0600
commit072e1f317549fa4df78ef9b7a72db090a164bcb7 (patch)
tree700016de4fa08f0665431630e8e744a92045bbb7 /tasks/announce.rb
parentc2dc84fd617a842676c4c2c684551741ade3a757 (diff)
downloadchef-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.rb57
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