aboutsummaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorNARUSE, Yui <naruse@airemix.jp>2019-10-22 21:37:49 +0900
committerNARUSE, Yui <naruse@airemix.jp>2019-10-22 21:44:19 +0900
commitd736511e4253c924bcfaa7125da3b07a67b6ecbf (patch)
tree42c7937c644991aa2725a22032a76c5664d2eaa7 /bin
parent04075305d3fd2806400235dfc744b6a0c70ef738 (diff)
downloadruby-d736511e4253c924bcfaa7125da3b07a67b6ecbf.tar.gz
Move format-release to tool and fix bugs
Diffstat (limited to 'bin')
-rwxr-xr-xbin/format-release197
1 files changed, 0 insertions, 197 deletions
diff --git a/bin/format-release b/bin/format-release
deleted file mode 100755
index 7404ba2696..0000000000
--- a/bin/format-release
+++ /dev/null
@@ -1,197 +0,0 @@
-#!/usr/bin/env ruby
-# https://rubygems.org/gems/diffy
-require "diffy"
-
-Diffy::Diff.default_options.merge!(
- include_diff_info: true,
- context: 1,
-)
-
-class Tarball
- attr_reader :version, :sha256
-
- def initialize(path, size, sha1, sha256, sha512)
- /\A\/(?:[^\/\n]*\/)*(?:ruby-(?<ver>(?<xy>\d+\.\d+)\.\d+(?:-(?:preview|rc)\d+)?)[0-9a-z.\-]+)/ =~ path \
- or raise "tarball path doesn't mach regexp"
- @path = path
- @size = size
- @sha1 = sha1
- @sha256 = sha256
- @sha512 = sha512
- @version = ver
- @xy = xy
- end
-
- def gz?; @path.end_with?('.gz'); end
- def zip?; @path.end_with?('.zip'); end
- def bz2?; @path.end_with?('.bz2'); end
- def xz?; @path.end_with?('.xz'); end
-
- def ext; @path[/(?:zip|tar\.(?:gz|bz2|xz))\z/]; end
-
- def to_md
- <<eom
-* <https://cache.ruby-lang.org/pub/ruby/#{@xy}/ruby-#{@version}.#{ext}>
-
- SIZE: #{@size} bytes
- SHA1: #{@sha1}
- SHA256: #{@sha256}
- SHA512: #{@sha512}
-eom
- end
-
- # * /home/naruse/obj/ruby-trunk/tmp/ruby-2.6.0-preview3.tar.gz
- # SIZE: 17116009 bytes
- # SHA1: 21f62c369661a2ab1b521fd2fa8191a4273e12a1
- # SHA256: 97cea8aa63dfa250ba6902b658a7aa066daf817b22f82b7ee28f44aec7c2e394
- # SHA512: 1e2042324821bb4e110af7067f52891606dcfc71e640c194ab1c117f0b941550e0b3ac36ad3511214ac80c536b9e5cfaf8789eec74cf56971a832ea8fc4e6d94
- def self.parse(io, wwwdir)
- ary = []
- ver = nil
- io.read.scan(/^\* .*(?:\n .*)*/) do |unit|
- path, size, sha1, sha256, sha512 = unit.lines.map(&:chomp)
- path.slice!(0, 2)
- size = size[/\d+/].to_i
- sha1 = sha1[/\h{40}/]
- sha256 = sha256[/\h{64}/]
- sha512 = sha512[/\h{128}/]
- tarball = Tarball.new(path, size, sha1, sha256, sha512)
- if ver
- raise "mixed versions" if tarball.version != ver
- else
- ver = tarball.version
- end
- ary << tarball
- end
- xy = ver[/\A\d+\.\d+/]
- ary.each do |tarball|
- puts tarball.to_md
- end
- update_branches_yml(ver, xy, wwwdir)
- update_downloads_yml(ver, xy, wwwdir)
- update_releases_yml(ver, xy, ary, wwwdir)
- ary
- end
-
- def self.update_branches_yml(ver, xy, wwwdir)
- filename = "_data/branches.yml"
- orig_data = File.read(File.join(wwwdir, filename))
- data = orig_data.dup
- if data.include?("\n- name: #{xy}\n")
- data.sub!(/\n- name: #{Regexp.escape(xy)}\n(?: .*\n)*/) do |node|
- unless ver.include?("-")
- # assume this is X.Y.0 release
- node.sub!(/^ status: preview\n/, " status: normal maintenance\n")
- node.sub!(/^ date:\n/, " status: #{Time.now.year}-12-25\n")
- end
- node
- end
- else
- if ver.include?("-")
- status = "preview"
- year = nil
- else
- status = "normal maintenance"
- year = Time.now.year
- end
- entry = <<eom
-- name: #{xy}
- status: #{status}
- date:#{ year && " #{year}-12-25" }
- eol_date:
-
-eom
- data.sub!(/(?=^- name)/, entry)
- end
- if data != orig_data
- diff = Diffy::Diff.new(orig_data, data)
- show_diff(filename, diff)
- end
- end
-
- def self.update_downloads_yml(ver, xy, wwwdir)
- filename = "_data/downloads.yml"
- orig_data = File.read(File.join(wwwdir, filename))
- data = orig_data.dup
-
- if /^preview:\n\n(?: .*\n)* - #{Regexp.escape(xy)}\./ =~ data
- if ver.include?("-")
- data.sub!(/^ - #{Regexp.escape(xy)}\..*/, " - #{ver}")
- else
- data.sub!(/^ - #{Regexp.escape(xy)}\..*\n/, "")
- data.sub!(/(?<=^stable:\n\n)/, " - #{ver}\n")
- end
- else
- unless data.sub!(/^ - #{Regexp.escape(xy)}\..*/, " - #{ver}")
- if ver.include?("-")
- data.sub!(/(?<=^preview:\n\n)/, " - #{ver}\n")
- else
- data.sub!(/(?<=^stable:\n\n)/, " - #{ver}\n")
- end
- end
- end
- if data != orig_data
- diff = Diffy::Diff.new(orig_data, data)
- show_diff(filename, diff)
- end
- end
-
- def self.update_releases_yml(ver, xy, ary, wwwdir)
- filename = "_data/releases.yml"
- orig_data = File.read(File.join(wwwdir, filename))
- data = orig_data.dup
-
- date = Time.now
- entry = <<eom
-- version: #{ver}
- date: #{date.strftime("%Y-%m-%d")}
- post: /en/news/#{date.strftime("%Y/%m/%d")}/ruby-#{ver.tr('.', '-')}-released/
- url:
- gz: https://cache.ruby-lang.org/pub/ruby/#{xy}/ruby-#{ver}.tar.gz
- zip: https://cache.ruby-lang.org/pub/ruby/#{xy}/ruby-#{ver}.zip
- bz2: https://cache.ruby-lang.org/pub/ruby/#{xy}/ruby-#{ver}.tar.bz2
- xz: https://cache.ruby-lang.org/pub/ruby/#{xy}/ruby-#{ver}.tar.xz
- sha256:
- gz: #{ary.find{|x|x.gz? }.sha256}
- zip: #{ary.find{|x|x.zip?}.sha256}
- bz2: #{ary.find{|x|x.bz2?}.sha256}
- xz: #{ary.find{|x|x.xz? }.sha256}
-eom
-
- if data.include?("\n- version: #{ver}\n")
- elsif data.sub!(/\n# #{Regexp.escape(xy)} series\n/, "\\&\n#{entry}")
- else
- data.sub!(/^$/, "\n# #{xy} series\n\n#{entry}")
- end
- if data != orig_data
- diff = Diffy::Diff.new(orig_data, data)
- show_diff(filename, diff)
- end
- end
-
- def self.show_diff(filename, diff)
- diff.each_with_index do |line, index|
- case index
- when 0
- line.sub!(/\A--- (.*)\t(\d+-\d+-\d+ [0-9:.]+ [\-+]\d+)\Z/) do
- "--- a/#{filename}\t#{$2}"
- end
- when 1
- line.sub!(/\A\+\+\+ (.*)\t(\d+-\d+-\d+ [0-9:.]+ [\-+]\d+)\Z/) do
- "+++ b/#{filename}\t#{$2}"
- end
- end
- puts line
- end
- end
-end
-
-def main
- if ARGV.size != 1
- STDERR.puts "usage: cat output-of-make-snapshot | format-release <dir-of-w.r-l.o>"
- exit
- end
- Tarball.parse(ARGF, wwwdir)
-end
-
-main