From d60780f6b6c37b4d4c82e385dff6b3d34e0a58e4 Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Tue, 24 Jan 2023 19:15:59 +0100 Subject: [PATCH] Simplify new-versions.rb --- new-versions.rb | 82 +++++++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 44 deletions(-) diff --git a/new-versions.rb b/new-versions.rb index 1325c1e..29039b8 100644 --- a/new-versions.rb +++ b/new-versions.rb @@ -3,66 +3,60 @@ p versions versions.each do |engine_version| puts engine_version - engine_input, version = engine_version.split('-', 2) + engine, version = engine_version.split('-', 2) + p [engine, version] - if engine_input == 'windows' + if engine == 'windows' require_relative 'generate-windows-versions' exit end - match = case engine_input + match = case engine when 'ruby', 'jruby' /^\d+\.\d+\./ - when 'truffleruby' + when 'truffleruby', 'truffleruby+graalvm' /^\d+\./ end raise engine_version unless version[match] - engines = [engine_input] - engines << 'truffleruby+graalvm' if engine_input == 'truffleruby' + # Update ruby-builder-versions.json + file = "#{__dir__}/ruby-builder-versions.json" + lines = File.readlines(file, chomp: true) - engines.each do |engine| - puts engine + from = lines.index { |line| line.include?(%{"#{engine}": [}) } + raise "Could not find start of #{engine}" unless from + to = from + to += 1 until lines[to].include?(']') - # Update ruby-builder-versions.json - file = "#{__dir__}/ruby-builder-versions.json" - lines = File.readlines(file, chomp: true) + from += 1 # [ + to -= 2 # head, ] - from = lines.index { |line| line.include?(%{"#{engine}": [}) } - raise "Could not find start of #{engine}" unless from - to = from - to += 1 until lines[to].include?(']') + puts lines[from..to] - from += 1 # [ - to -= 2 # head, ] + release_line = lines[from..to].find { |line| + v = line[/"([^"]+)"/, 1] and v[match] == version[match] + } - puts lines[from..to] - - release_line = lines[from..to].find { |line| - v = line[/"([^"]+)"/, 1] and v[match] == version[match] - } - - if release_line - append = " #{version.inspect}," - release_line << append unless release_line.end_with?(append) - else - lines.insert to+1, " #{version.inspect}," - end - - File.write(file, lines.join("\n") + "\n") - - # Update README.md - file = "#{__dir__}/README.md" - lines = File.readlines(file) - engine_line = lines.find { |line| line.start_with?("| `#{engine}`") } - engine_line.sub!(/(.+ (?:-|until)) (\d+(?:\.\d+)+(?:-\w+)?)/) do - if Gem::Version.new(version) > Gem::Version.new($2) - "#{$1} #{version}" - else - $& - end - end - File.write(file, lines.join) + if release_line + append = " #{version.inspect}," + release_line << append unless release_line.end_with?(append) + else + lines.insert to+1, " #{version.inspect}," end + + File.write(file, lines.join("\n") + "\n") + + # Update README.md + file = "#{__dir__}/README.md" + lines = File.readlines(file) + engine_line = lines.find { |line| line.start_with?("| `#{engine}`") } + engine_line.sub!(/(.+ (?:-|until)) (\d+(?:\.\d+)+(?:-\w+)?)/) do + if Gem::Version.new(version) > Gem::Version.new($2) + "#{$1} #{version}" + else + $& + end + end + File.write(file, lines.join) end