-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathRakefile
57 lines (48 loc) · 1.96 KB
/
Rakefile
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
54
55
56
57
# frozen_string_literal: true
require "date"
require "rake/testtask"
require "keepachangelog"
Rake::TestTask.new(:unit) do |t|
t.libs << "test"
t.libs << "lib"
t.test_files = FileList["test/**/test_*.rb"]
end
Rake::TestTask.new(:integration) do |t|
t.test_files = FileList["integration_tests/minitest/grape_app/test/**/*_test.rb"]
end
require "rubocop/rake_task"
RuboCop::RakeTask.new
require "rspec/core/rake_task"
RSpec::Core::RakeTask.new(:spec)
task test: [:unit, :spec]
task default: [:test, :spec, "rubocop:autocorrect_all"]
desc "Increment the version, update changelog and create a tag for the release"
task :release, [:version] do |_t, args|
parser = Keepachangelog::MarkdownParser.load("CHANGELOG.md")
log = parser.parsed_content["versions"].delete("Unreleased")
sh("gem bump --pretend -v #{args[:version]}") do |ok, _|
if ok
new_version = %x(gem bump --no-commit -v #{args[:version]} | awk '{print $4}' | uniq).chomp
parser.parsed_content["versions"]["Unreleased"] = { "url" => nil, "date" => nil, "changes" => {} }
parser.parsed_content["versions"]["#{new_version} - #{Date.today}"] = log
File.open("CHANGELOG.md", "w") do |file|
file.write(parser.to_md)
end
%x(git add CHANGELOG.md lib/flutter/version.rb)
%x(git commit -m "Bump flutter to #{new_version}")
%x(gem tag -s)
Rake::Task["release_notes"].execute({ version: new_version })
end
end
end
desc "Get release notes for the current or specific version"
task :release_notes, [:version] do |_t, args|
version = args[:version] || Flutter::VERSION
parser = Keepachangelog::MarkdownParser.load("CHANGELOG.md")
parser.parsed_content.delete("intro")
parser.parsed_content.delete("title")
parser.parsed_content["versions"] = parser.parsed_content["versions"].select { |k, _v| k.start_with?(version) }
lines = parser.to_md.split("\n")
chunk = lines.slice_after { |line| line.include?("## #{version}") }.to_a[1] || []
puts chunk.join("\n")
end