Update new-version script to handle truffleruby+graalvm automatically

This commit is contained in:
Benoit Daloze
2022-01-25 18:58:02 +01:00
parent 32c0569c64
commit 8a48a656bf
+38 -30
View File
@@ -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' when 'ruby', 'jruby'
/^\d+\.\d+\./ /^\d+\.\d+\./
when 'truffleruby' when 'truffleruby'
@@ -9,41 +9,49 @@ end
raise unless version[MATCH] raise unless version[MATCH]
# Update ruby-builder-versions.json engines = [engine_input]
file = "#{__dir__}/ruby-builder-versions.json" engines << 'truffleruby+graalvm' if engine_input == 'truffleruby'
lines = File.readlines(file, chomp: true)
from = lines.index { |line| line =~ /"#{engine}": \[/ } engines.each do |engine|
to = from puts engine
to += 1 until lines[to].include?(']')
from += 1 # [ # Update ruby-builder-versions.json
to -= 2 # head, ] 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| from += 1 # [
v = line[/"([^"]+)"/, 1] and v[MATCH] == version[MATCH] to -= 2 # head, ]
}
if release_line puts lines[from..to]
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") release_line = lines[from..to].find { |line|
v = line[/"([^"]+)"/, 1] and v[MATCH] == version[MATCH]
}
# Update README.md if release_line
file = "#{__dir__}/README.md" append = " #{version.inspect},"
lines = File.readlines(file) release_line << append unless release_line.end_with?(append)
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 else
$& lines.insert to+1, " #{version.inspect},"
end 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 end
File.write(file, lines.join)