2021-01-21 17:43:52 -05:00
|
|
|
# typed: true
|
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
# Helper functions for generating release notes.
|
|
|
|
#
|
|
|
|
# @api private
|
|
|
|
module ReleaseNotes
|
|
|
|
extend T::Sig
|
|
|
|
|
|
|
|
module_function
|
|
|
|
|
|
|
|
sig {
|
2021-01-23 02:06:12 -05:00
|
|
|
params(start_ref: T.any(String, Version), end_ref: T.any(String, Version), markdown: T.nilable(T::Boolean))
|
2021-01-21 17:43:52 -05:00
|
|
|
.returns(String)
|
|
|
|
}
|
|
|
|
def generate_release_notes(start_ref, end_ref, markdown: false)
|
2021-06-21 14:25:01 +01:00
|
|
|
Utils.popen_read(
|
2021-01-21 17:43:52 -05:00
|
|
|
"git", "-C", HOMEBREW_REPOSITORY, "log", "--pretty=format:'%s >> - %b%n'", "#{start_ref}..#{end_ref}"
|
2021-06-21 14:25:01 +01:00
|
|
|
).lines.map do |s|
|
2021-04-28 21:23:52 -07:00
|
|
|
matches = s.match(%r{.*Merge pull request #(?<pr>\d+) from (?<user>[^/]+)/[^>]*>> - (?<body>.*)})
|
2021-06-21 14:25:01 +01:00
|
|
|
next if matches.blank?
|
|
|
|
next if matches[:user] == "Homebrew"
|
2021-01-21 17:43:52 -05:00
|
|
|
|
2021-06-21 14:25:01 +01:00
|
|
|
body = matches[:body].presence
|
|
|
|
body ||= s.gsub(/.*(Merge pull request .*) >> - .*/, "\\1").chomp
|
2021-01-21 17:43:52 -05:00
|
|
|
|
2021-06-21 14:25:01 +01:00
|
|
|
"- [#{body}](https://github.com/Homebrew/brew/pull/#{matches[:pr]}) (@#{matches[:user]})\n"
|
|
|
|
end.compact.join
|
2021-01-21 17:43:52 -05:00
|
|
|
end
|
|
|
|
end
|