fluentd-ui/lib/tasks/release.rake
2015-04-15 16:17:58 +09:00

54 lines
1.7 KiB
Ruby

namespace :release do
desc "Add header of now version release to ChangeLog and bump up version"
task :prepare do
raise "Use this task in development only" unless Rails.env.development?
# Fetch remote
system("git fetch origin")
# detect merged PR
old_version = FluentdUI::VERSION
pr_numbers = `git log v#{old_version}..origin/master --oneline`.scan(/#[0-9]+/)
if !$?.success? || pr_numbers.empty?
puts "Detecting PR failed. Please confirm if any PR were merged after the latest release."
exit(false)
end
# Generate new version
/\.([0-9]+)\z/.match(old_version)
old_revision = $1
new_version = old_version.gsub(/\.#{old_revision}\z/, ".#{old_revision.to_i + 1}")
# Update ChangeLog
changelog_filename = Rails.root.join('ChangeLog.md')
changelog = File.read(changelog_filename)
pr_descriptions = pr_numbers.map do |number|
"* [] [#{number}](https://github.com/fluent/fluentd-ui/pull/#{number.gsub('#', '')}) "
end.join("\n")
new_changelog = <<-HEADER
## Release #{new_version} - #{Time.now.strftime("%Y/%m/%d")}
#{pr_descriptions}
#{changelog.chomp}
HEADER
File.open(changelog_filename, "w") {|f| f.write(new_changelog)}
# Update version.rb
version_filename = Rails.root.join("lib", "fluentd-ui", "version.rb")
version_class = File.read(version_filename)
new_version_class = version_class.gsub(/VERSION = \"#{old_version}\"/, "VERSION = \"#{new_version}\"")
File.open(version_filename, 'w') {|f| f.write(new_version_class)}
# Update Gemfile.lock
system("bundle install")
puts "ChangeLog, version and Gemfile.lock were updated. New version is #{new_version}."
end
end