Update new-version script to handle truffleruby+graalvm automatically
This commit is contained in:
+38
-30
@@ -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)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user