Add ReleaseNotes module
This commit is contained in:
parent
be02591cb6
commit
e1f73e407a
@ -2,6 +2,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "cli/parser"
|
||||
require "release_notes"
|
||||
|
||||
module Homebrew
|
||||
extend T::Sig
|
||||
@ -55,25 +56,9 @@ module Homebrew
|
||||
odie "Ref #{ref} does not exist!"
|
||||
end
|
||||
|
||||
output = Utils.popen_read(
|
||||
"git", "-C", HOMEBREW_REPOSITORY, "log", "--pretty=format:'%s >> - %b%n'", "#{previous_tag}..#{end_ref}"
|
||||
).lines.grep(/Merge pull request/)
|
||||
|
||||
output.map! do |s|
|
||||
s.gsub(%r{.*Merge pull request #(\d+) from ([^/]+)/[^>]*(>>)*},
|
||||
"https://github.com/Homebrew/brew/pull/\\1 (@\\2)")
|
||||
end
|
||||
if args.markdown?
|
||||
output.map! do |s|
|
||||
/(.*\d)+ \(@(.+)\) - (.*)/ =~ s
|
||||
"- [#{Regexp.last_match(3)}](#{Regexp.last_match(1)}) (@#{Regexp.last_match(2)})"
|
||||
end
|
||||
end
|
||||
release_notes = ReleaseNotes.generate_release_notes previous_tag, end_ref, markdown: T.must(args.markdown?)
|
||||
|
||||
$stderr.puts "Release notes between #{previous_tag} and #{end_ref}:"
|
||||
if args.markdown? && args.named.first
|
||||
puts "Release notes for major and minor releases can be found in the [Homebrew blog](https://brew.sh/blog/)."
|
||||
end
|
||||
puts output
|
||||
puts release_notes
|
||||
end
|
||||
end
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require "cli/parser"
|
||||
require "release_notes"
|
||||
|
||||
module Homebrew
|
||||
extend T::Sig
|
||||
@ -59,31 +60,24 @@ module Homebrew
|
||||
end
|
||||
|
||||
new_version = if args.major?
|
||||
Version.new [latest_version.major.to_i + 1, 0, 0].join(".")
|
||||
Version.new "#{latest_version.major.to_i + 1}.0.0"
|
||||
elsif args.minor?
|
||||
Version.new [latest_version.major, latest_version.minor.to_i + 1, 0].join(".")
|
||||
Version.new "#{latest_version.major}.#{latest_version.minor.to_i + 1}.0"
|
||||
else
|
||||
Version.new [latest_version.major, latest_version.minor, latest_version.patch.to_i + 1].join(".")
|
||||
Version.new "#{latest_version.major}.#{latest_version.minor}.#{latest_version.patch.to_i + 1}"
|
||||
end.to_s
|
||||
|
||||
ohai "Creating draft release for version #{new_version}"
|
||||
|
||||
release_notes = if args.major? || args.minor?
|
||||
["Release notes for this release can be found on the [Homebrew blog](https://brew.sh/blog/#{new_version})."]
|
||||
"Release notes for this release can be found on the [Homebrew blog](https://brew.sh/blog/#{new_version}).\n"
|
||||
else
|
||||
[]
|
||||
end
|
||||
release_notes += Utils.popen_read(
|
||||
"git", "-C", HOMEBREW_REPOSITORY, "log", "--pretty=format:'%s >> - %b%n'", "#{latest_version}..origin/HEAD"
|
||||
).lines.grep(/Merge pull request/).map! do |s|
|
||||
pr = s.gsub(%r{.*Merge pull request #(\d+) from ([^/]+)/[^>]*(>>)*},
|
||||
"https://github.com/Homebrew/brew/pull/\\1 (@\\2)")
|
||||
/(.*\d)+ \(@(.+)\) - (.*)/ =~ pr
|
||||
"- [#{Regexp.last_match(3)}](#{Regexp.last_match(1)}) (@#{Regexp.last_match(2)})"
|
||||
""
|
||||
end
|
||||
release_notes += ReleaseNotes.generate_release_notes latest_version, "origin/HEAD", markdown: true
|
||||
|
||||
begin
|
||||
release = GitHub.create_or_update_release "Homebrew", "brew", new_version,
|
||||
body: release_notes.join("\n"), draft: true
|
||||
release = GitHub.create_or_update_release "Homebrew", "brew", new_version, body: release_notes, draft: true
|
||||
rescue *GitHub::API_ERRORS => e
|
||||
odie "Unable to create release: #{e.message}!"
|
||||
end
|
||||
|
||||
35
Library/Homebrew/release_notes.rb
Normal file
35
Library/Homebrew/release_notes.rb
Normal file
@ -0,0 +1,35 @@
|
||||
# typed: true
|
||||
# frozen_string_literal: true
|
||||
|
||||
# Helper functions for generating release notes.
|
||||
#
|
||||
# @api private
|
||||
module ReleaseNotes
|
||||
extend T::Sig
|
||||
|
||||
module_function
|
||||
|
||||
sig {
|
||||
params(start_ref: T.any(String, Version), end_ref: T.any(String, Version), markdown: T::Boolean)
|
||||
.returns(String)
|
||||
}
|
||||
def generate_release_notes(start_ref, end_ref, markdown: false)
|
||||
log_output = Utils.popen_read(
|
||||
"git", "-C", HOMEBREW_REPOSITORY, "log", "--pretty=format:'%s >> - %b%n'", "#{start_ref}..#{end_ref}"
|
||||
).lines.grep(/Merge pull request/)
|
||||
|
||||
log_output.map! do |s|
|
||||
s.gsub(%r{.*Merge pull request #(\d+) from ([^/]+)/[^>]*(>>)*},
|
||||
"https://github.com/Homebrew/brew/pull/\\1 (@\\2)")
|
||||
end
|
||||
|
||||
if markdown
|
||||
log_output.map! do |s|
|
||||
/(.*\d)+ \(@(.+)\) - (.*)/ =~ s
|
||||
"- [#{Regexp.last_match(3)}](#{Regexp.last_match(1)}) (@#{Regexp.last_match(2)})\n"
|
||||
end
|
||||
end
|
||||
|
||||
log_output.join
|
||||
end
|
||||
end
|
||||
Loading…
x
Reference in New Issue
Block a user