Rakefile in rbs-3.0.0.dev.1 vs Rakefile in rbs-3.0.0.dev.2
- old
+ new
@@ -67,13 +67,21 @@
FileList["test/stdlib/**/*_test.rb"].each do |test|
task test => :compile do
sh "#{ruby} -Ilib #{bin}/test_runner.rb #{test}"
end
- task stdlib_test: test
end
+task :stdlib_test do
+ test_files = FileList["test/stdlib/**/*_test.rb"].reject do |path|
+ path =~ %r{Ractor}
+ end
+ sh "#{ruby} -Ilib #{bin}/test_runner.rb #{test_files.join(' ')}"
+ # TODO: Ractor tests need to be run in a separate process
+ sh "#{ruby} -Ilib #{bin}/test_runner.rb test/stdlib/Ractor_test.rb"
+end
+
task :rubocop do
sh "rubocop --parallel"
end
namespace :generate do
@@ -222,6 +230,72 @@
task :test_generate_stdlib do
sh "RBS_GENERATE_TEST_PATH=/tmp/Array_test.rb rake 'generate:stdlib_test[Array]'"
sh "ruby -c /tmp/Array_test.rb"
sh "RBS_GENERATE_TEST_PATH=/tmp/Thread_Mutex_test.rb rake 'generate:stdlib_test[Thread::Mutex]'"
sh "ruby -c /tmp/Thread_Mutex_test.rb"
+end
+
+Rake::Task[:release].enhance do
+ Rake::Task[:"release:note"].invoke
+end
+
+namespace :release do
+ desc "Explain the post-release steps automatically"
+ task :note do
+ version = Gem::Version.new(RBS::VERSION)
+ major, minor, patch, *_ = RBS::VERSION.split(".")
+ major = major.to_i
+ minor = minor.to_i
+ patch = patch.to_i
+
+ puts "🎉🎉🎉🎉 Congratulations for **#{version}** release! 🎉🎉🎉🎉"
+ puts
+ puts "There are a few things left to complete the release. 💪"
+ puts
+
+ if patch == 0 || version.prerelease?
+ puts "* [ ] Update release note: https://github.com/ruby/rbs/wiki/Release-Note-#{major}.#{minor}"
+ end
+
+ if patch == 0 && !version.prerelease?
+ puts "* [ ] Delete `RBS XYZ is the latest version of...` from release note: https://github.com/ruby/rbs/wiki/Release-Note-#{major}.#{minor}"
+ end
+
+ puts "* [ ] Publish a release at GitHub"
+ puts "* [ ] Make some announcements on Twitter/Mustdon/Slack/???"
+
+ puts
+ puts
+
+ puts "✏️ Making a draft release on GitHub..."
+
+ content = File.read(File.join(__dir__, "CHANGELOG.md"))
+ changelog = content.scan(/^## \d.*?(?=^## \d)/m)[0]
+ changelog = changelog.sub(/^.*\n^.*\n/, "").rstrip
+
+ notes = <<NOTES
+[Release note](https://github.com/ruby/rbs/wiki/Release-Note-#{major}.#{minor})
+
+#{changelog}
+NOTES
+
+ command = [
+ "gh",
+ "release",
+ "create",
+ "--draft",
+ "v#{RBS::VERSION}",
+ "--title=#{RBS::VERSION}",
+ "--notes=#{notes}"
+ ]
+
+ if version.prerelease?
+ command << "--prerelease"
+ end
+
+ require "open3"
+ output, status = Open3.capture2(*command)
+ if status.success?
+ puts " >> Done! Open #{output.chomp} and publish the release!"
+ end
+ end
end