mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
format-release uses the result of GitHub Actions
This commit is contained in:
parent
0ba1ea7fbf
commit
b2b1279272
1 changed files with 71 additions and 31 deletions
|
@ -1,6 +1,8 @@
|
||||||
#!/usr/bin/env ruby
|
#!/usr/bin/env ruby
|
||||||
# https://rubygems.org/gems/diffy
|
# https://rubygems.org/gems/diffy
|
||||||
require "diffy"
|
require "diffy"
|
||||||
|
require "open-uri"
|
||||||
|
require "yaml"
|
||||||
|
|
||||||
Diffy::Diff.default_options.merge!(
|
Diffy::Diff.default_options.merge!(
|
||||||
include_diff_info: true,
|
include_diff_info: true,
|
||||||
|
@ -10,24 +12,22 @@ Diffy::Diff.default_options.merge!(
|
||||||
class Tarball
|
class Tarball
|
||||||
attr_reader :version, :sha256
|
attr_reader :version, :sha256
|
||||||
|
|
||||||
def initialize(path, size, sha1, sha256, sha512)
|
def initialize(version, url, size, sha1, sha256, sha512)
|
||||||
/\A\/(?:[^\/\n]*\/)*(?:ruby-(?<ver>(?<xy>\d+\.\d+)\.\d+(?:-(?:preview|rc)\d+)?)[0-9a-z.\-]+)/ =~ path \
|
@url = url
|
||||||
or raise "tarball path doesn't mach regexp"
|
|
||||||
@path = path
|
|
||||||
@size = size
|
@size = size
|
||||||
@sha1 = sha1
|
@sha1 = sha1
|
||||||
@sha256 = sha256
|
@sha256 = sha256
|
||||||
@sha512 = sha512
|
@sha512 = sha512
|
||||||
@version = ver
|
@version = version
|
||||||
@xy = xy
|
@xy = version[/\A\d+\.\d+/]
|
||||||
end
|
end
|
||||||
|
|
||||||
def gz?; @path.end_with?('.gz'); end
|
def gz?; @url.end_with?('.gz'); end
|
||||||
def zip?; @path.end_with?('.zip'); end
|
def zip?; @url.end_with?('.zip'); end
|
||||||
def bz2?; @path.end_with?('.bz2'); end
|
def bz2?; @url.end_with?('.bz2'); end
|
||||||
def xz?; @path.end_with?('.xz'); end
|
def xz?; @url.end_with?('.xz'); end
|
||||||
|
|
||||||
def ext; @path[/(?:zip|tar\.(?:gz|bz2|xz))\z/]; end
|
def ext; @url[/(?:zip|tar\.(?:gz|bz2|xz))\z/]; end
|
||||||
|
|
||||||
def to_md
|
def to_md
|
||||||
<<eom
|
<<eom
|
||||||
|
@ -45,31 +45,69 @@ eom
|
||||||
# SHA1: 21f62c369661a2ab1b521fd2fa8191a4273e12a1
|
# SHA1: 21f62c369661a2ab1b521fd2fa8191a4273e12a1
|
||||||
# SHA256: 97cea8aa63dfa250ba6902b658a7aa066daf817b22f82b7ee28f44aec7c2e394
|
# SHA256: 97cea8aa63dfa250ba6902b658a7aa066daf817b22f82b7ee28f44aec7c2e394
|
||||||
# SHA512: 1e2042324821bb4e110af7067f52891606dcfc71e640c194ab1c117f0b941550e0b3ac36ad3511214ac80c536b9e5cfaf8789eec74cf56971a832ea8fc4e6d94
|
# SHA512: 1e2042324821bb4e110af7067f52891606dcfc71e640c194ab1c117f0b941550e0b3ac36ad3511214ac80c536b9e5cfaf8789eec74cf56971a832ea8fc4e6d94
|
||||||
def self.parse(wwwdir, file)
|
def self.parse(wwwdir, version)
|
||||||
ary = []
|
ary = []
|
||||||
ver = nil
|
|
||||||
File.read(file).scan(/^\* .*(?:\n .*)*/) do |unit|
|
unless /\A(\d+)\.(\d+)\.(\d+)(?:-(?:preview|rc)\d+)?\z/ =~ version
|
||||||
path, size, sha1, sha256, sha512 = unit.lines.map(&:chomp)
|
raise "unexpected version string '#{version}'"
|
||||||
path.slice!(0, 2)
|
end
|
||||||
size = size[/\d+/].to_i
|
x = $1.to_i
|
||||||
sha1 = sha1[/\h{40}/]
|
y = $2.to_i
|
||||||
sha256 = sha256[/\h{64}/]
|
z = $3.to_i
|
||||||
sha512 = sha512[/\h{128}/]
|
# previous tag for git diff --shortstat
|
||||||
tarball = Tarball.new(path, size, sha1, sha256, sha512)
|
# It's only for x.y.0 release
|
||||||
if ver
|
if z != 0
|
||||||
raise "mixed versions" if tarball.version != ver
|
prev_tag = nil
|
||||||
else
|
elsif y != 0
|
||||||
ver = tarball.version
|
prev_tag = "v#{x}_#{y-1}_0"
|
||||||
end
|
prev_ver = "#{x}.#{y-1}.0"
|
||||||
|
elsif x == 3 && y == 0 && z == 0
|
||||||
|
prev_tag = "v2_7_0"
|
||||||
|
prev_ver = "2.7.0"
|
||||||
|
else
|
||||||
|
raise "unexpected version for prev_ver '#{version}'"
|
||||||
|
end
|
||||||
|
|
||||||
|
uri = "https://cache.ruby-lang.org/pub/tmp/ruby-info-#{version}-draft.yml"
|
||||||
|
info = YAML.load(URI(uri).read)
|
||||||
|
if info.size != 1
|
||||||
|
raise "unexpected info.yml '#{uri}'"
|
||||||
|
end
|
||||||
|
info[0]["size"].each_key do |ext|
|
||||||
|
url = info[0]["url"][ext]
|
||||||
|
size = info[0]["size"][ext]
|
||||||
|
sha1 = info[0]["sha1"][ext]
|
||||||
|
sha256 = info[0]["sha256"][ext]
|
||||||
|
sha512 = info[0]["sha512"][ext]
|
||||||
|
tarball = Tarball.new(version, url, size, sha1, sha256, sha512)
|
||||||
ary << tarball
|
ary << tarball
|
||||||
end
|
end
|
||||||
xy = ver[/\A\d+\.\d+/]
|
|
||||||
|
if prev_tag
|
||||||
|
# show diff shortstat
|
||||||
|
tag = "v#{version.gsub(/[.\-]/, '_')}"
|
||||||
|
stat = `git diff --shortstat #{prev_tag}..#{tag}`
|
||||||
|
changes, add, delete = stat.scan(/\d+/)
|
||||||
|
puts stat
|
||||||
|
puts <<eom
|
||||||
|
See [NEWS](https://github.com/ruby/ruby/blob/#{tag}/NEWS) or [commit logs](https://github.com/ruby/ruby/compare/#{prev_tag}...#{tag}) for more details.
|
||||||
|
|
||||||
|
With those changes, [stat](https://github.com/ruby/ruby/compare/#{prev_tag}...#{tag}) since Ruby #{prev_ver}!
|
||||||
|
|
||||||
|
その他詳細については、[NEWS](https://github.com/ruby/ruby/blob/#{tag}/NEWS) ファイルまたは[コミットログ](https://github.com/ruby/ruby/compare/#{prev_tag}...#{tag})を参照してください。
|
||||||
|
|
||||||
|
なお、こうした変更により、Ruby #{prev_ver} 以降では [#{changes} 個のファイルに変更が加えられ、#{add} 行の追加と #{delete} 行の削除が行われました](https://github.com/ruby/ruby/compare/#{prev_tag}...#{tag}) !
|
||||||
|
eom
|
||||||
|
end
|
||||||
|
|
||||||
|
xy = version[/\A\d+\.\d+/]
|
||||||
|
puts "## Download\n\n"
|
||||||
ary.each do |tarball|
|
ary.each do |tarball|
|
||||||
puts tarball.to_md
|
puts tarball.to_md
|
||||||
end
|
end
|
||||||
update_branches_yml(ver, xy, wwwdir)
|
update_branches_yml(version, xy, wwwdir)
|
||||||
update_downloads_yml(ver, xy, wwwdir)
|
update_downloads_yml(version, xy, wwwdir)
|
||||||
update_releases_yml(ver, xy, ary, wwwdir)
|
update_releases_yml(version, xy, ary, wwwdir)
|
||||||
ary
|
ary
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -191,7 +229,9 @@ def main
|
||||||
STDERR.puts "usage: format-release <dir-of-w.r-l.o> <output-of-make-snapshot>"
|
STDERR.puts "usage: format-release <dir-of-w.r-l.o> <output-of-make-snapshot>"
|
||||||
exit
|
exit
|
||||||
end
|
end
|
||||||
Tarball.parse(ARGV[0], ARGV[1])
|
wwwdir = ARGV.shift
|
||||||
|
version = ARGV.shift
|
||||||
|
Tarball.parse(wwwdir, version)
|
||||||
end
|
end
|
||||||
|
|
||||||
main
|
main
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue