diff --git a/new-version.rb b/new-version.rb index 325d179..77bdaa3 100644 --- a/new-version.rb +++ b/new-version.rb @@ -1,6 +1,6 @@ -engine, version = ARGV.fetch(0).split('-', 2) +engine_input, version = ARGV.fetch(0).split('-', 2) -MATCH = case engine +MATCH = case engine_input when 'ruby', 'jruby' /^\d+\.\d+\./ when 'truffleruby' @@ -9,41 +9,49 @@ end raise unless version[MATCH] -# Update ruby-builder-versions.json -file = "#{__dir__}/ruby-builder-versions.json" -lines = File.readlines(file, chomp: true) +engines = [engine_input] +engines << 'truffleruby+graalvm' if engine_input == 'truffleruby' -from = lines.index { |line| line =~ /"#{engine}": \[/ } -to = from -to += 1 until lines[to].include?(']') +engines.each do |engine| + puts engine -from += 1 # [ -to -= 2 # head, ] + # Update ruby-builder-versions.json + file = "#{__dir__}/ruby-builder-versions.json" + lines = File.readlines(file, chomp: true) -puts lines[from..to] + from = lines.index { |line| line.include?(%{"#{engine}": [}) } + raise "Could not find start of #{engine}" unless from + to = from + to += 1 until lines[to].include?(']') -release_line = lines[from..to].find { |line| - v = line[/"([^"]+)"/, 1] and v[MATCH] == version[MATCH] -} + from += 1 # [ + to -= 2 # head, ] -if release_line - append = " #{version.inspect}," - release_line << append unless release_line.end_with?(append) -else - lines.insert to+1, " #{version.inspect}," -end + puts lines[from..to] -File.write(file, lines.join("\n") + "\n") + release_line = lines[from..to].find { |line| + v = line[/"([^"]+)"/, 1] and v[MATCH] == version[MATCH] + } -# 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+)+)/) do - if Gem::Version.new(version) > Gem::Version.new($2) - "#{$1} #{version}" + 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+)+)/) do + if Gem::Version.new(version) > Gem::Version.new($2) + "#{$1} #{version}" + else + $& + end + end + File.write(file, lines.join) end -File.write(file, lines.join)