Merge pull request #11569 from MikeMcQuaid/cleanup_release_notes

release_notes: refactor/cleanup.
This commit is contained in:
Mike McQuaid 2021-06-22 15:04:59 +01:00 committed by GitHub
commit 4f33c2cbb4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 30 deletions

View File

@ -71,7 +71,7 @@ module Homebrew
latest_major_minor_version = "#{latest_version.major}.#{latest_version.minor.to_i}.0" latest_major_minor_version = "#{latest_version.major}.#{latest_version.minor.to_i}.0"
ohai "Release notes since #{latest_major_minor_version} for #{new_version} blog post:" ohai "Release notes since #{latest_major_minor_version} for #{new_version} blog post:"
# release notes without username suffix or dependabot bumps # release notes without username suffix or dependabot bumps
puts ReleaseNotes.generate_release_notes(latest_major_minor_version, "origin/HEAD", markdown: true) puts ReleaseNotes.generate_release_notes(latest_major_minor_version, "origin/HEAD")
.lines .lines
.reject { |l| l.include?(" (@Homebrew)") } .reject { |l| l.include?(" (@Homebrew)") }
.map { |l| l.gsub(/ \(@[\w-]+\)$/, "") } .map { |l| l.gsub(/ \(@[\w-]+\)$/, "") }
@ -85,7 +85,7 @@ module Homebrew
else else
"" ""
end end
release_notes += ReleaseNotes.generate_release_notes latest_version, "origin/HEAD", markdown: true release_notes += ReleaseNotes.generate_release_notes latest_version, "origin/HEAD"
begin begin
release = GitHub.create_or_update_release "Homebrew", "brew", new_version, body: release_notes, draft: true release = GitHub.create_or_update_release "Homebrew", "brew", new_version, body: release_notes, draft: true

View File

@ -14,27 +14,17 @@ module ReleaseNotes
.returns(String) .returns(String)
} }
def generate_release_notes(start_ref, end_ref, markdown: false) def generate_release_notes(start_ref, end_ref, markdown: false)
log_output = Utils.popen_read( Utils.popen_read(
"git", "-C", HOMEBREW_REPOSITORY, "log", "--pretty=format:'%s >> - %b%n'", "#{start_ref}..#{end_ref}" "git", "-C", HOMEBREW_REPOSITORY, "log", "--pretty=format:'%s >> - %b%n'", "#{start_ref}..#{end_ref}"
).lines.grep(/Merge pull request/) ).lines.map do |s|
log_output.map! do |s|
matches = s.match(%r{.*Merge pull request #(?<pr>\d+) from (?<user>[^/]+)/[^>]*>> - (?<body>.*)}) matches = s.match(%r{.*Merge pull request #(?<pr>\d+) from (?<user>[^/]+)/[^>]*>> - (?<body>.*)})
body = if matches[:body].empty? next if matches.blank?
s.gsub(/.*(Merge pull request .*) >> - .*/, "\\1").chomp next if matches[:user] == "Homebrew"
else
matches[:body]
end
"https://github.com/Homebrew/brew/pull/#{matches[:pr]} (@#{matches[:user]}) - #{body}\n"
end
if markdown body = matches[:body].presence
log_output.map! do |s| body ||= s.gsub(/.*(Merge pull request .*) >> - .*/, "\\1").chomp
/(.*\d)+ \(@(.+)\) - (.*)/ =~ s
"- [#{Regexp.last_match(3)}](#{Regexp.last_match(1)}) (@#{Regexp.last_match(2)})\n"
end
end
log_output.join "- [#{body}](https://github.com/Homebrew/brew/pull/#{matches[:pr]}) (@#{matches[:user]})\n"
end.compact.join
end end
end end

View File

@ -18,19 +18,10 @@ describe ReleaseNotes do
end end
describe ".generate_release_notes" do describe ".generate_release_notes" do
it "generates release notes" do
expect(described_class.generate_release_notes("release-notes-testing", "HEAD")).to eq <<~NOTES
https://github.com/Homebrew/brew/pull/3 (@User) - Merge pull request #3 from User/another_change
https://github.com/Homebrew/brew/pull/2 (@User) - Do something else
https://github.com/Homebrew/brew/pull/1 (@Homebrew) - Do something
NOTES
end
it "generates markdown release notes" do it "generates markdown release notes" do
expect(described_class.generate_release_notes("release-notes-testing", "HEAD", markdown: true)).to eq <<~NOTES expect(described_class.generate_release_notes("release-notes-testing", "HEAD")).to eq <<~NOTES
- [Merge pull request #3 from User/another_change](https://github.com/Homebrew/brew/pull/3) (@User) - [Merge pull request #3 from User/another_change](https://github.com/Homebrew/brew/pull/3) (@User)
- [Do something else](https://github.com/Homebrew/brew/pull/2) (@User) - [Do something else](https://github.com/Homebrew/brew/pull/2) (@User)
- [Do something](https://github.com/Homebrew/brew/pull/1) (@Homebrew)
NOTES NOTES
end end
end end