[DOC] Extract tool/update-NEWS-gemlist.rb
This commit is contained in:
parent
94d6d6d93f
commit
3ecffae8e8
Notes:
git
2023-01-13 13:15:20 +00:00
30
.github/workflows/bundled_gems.yml
vendored
30
.github/workflows/bundled_gems.yml
vendored
@ -56,35 +56,7 @@ jobs:
|
||||
|
||||
- name: Maintain updated gems list in NEWS
|
||||
run: |
|
||||
#!ruby
|
||||
require 'json'
|
||||
news = File.read("NEWS.md")
|
||||
prev = news[/since the \*+(\d+\.\d+\.\d+)\*+/, 1]
|
||||
prevs = [prev, prev.sub(/\.\d+\z/, '')]
|
||||
%W[bundled].each do |type|
|
||||
last = JSON.parse(File.read("#{type}_gems.json"))['gems'].filter_map do |g|
|
||||
v = g['versions'].values_at(*prevs).compact.first
|
||||
g = g['gem']
|
||||
g = 'RubyGems' if g == 'rubygems'
|
||||
[g, v] if v
|
||||
end.to_h
|
||||
changed = File.foreach("gems/#{type}_gems").filter_map do |l|
|
||||
next if l.start_with?("#")
|
||||
g, v = l.split(" ", 3)
|
||||
[g, v] unless last[g] == v
|
||||
end
|
||||
changed, added = changed.partition {|g, _| last[g]}
|
||||
news.sub!(/^\*( +)The following #{type} gems? are updated\.\n+\K(?: \1\*( +).*\n)*/) do
|
||||
mark = "#{$1} *#{$2}"
|
||||
changed.map {|g, v|"#{mark}#{g} #{v}\n"}.join("")
|
||||
end or next
|
||||
news.sub!(/^\*( +)The following default gems are now bundled gems\.\n+\K(?: \1\*( +).*\n)*/) do
|
||||
mark = "#{$1} *#{$2}"
|
||||
added.map {|g, v|"#{mark}#{g} #{v}\n"}.join("")
|
||||
end or next unless added.empty?
|
||||
File.write("NEWS.md", news)
|
||||
end
|
||||
shell: ruby {0}
|
||||
ruby tool/update-NEWS-gemlist.rb bundled
|
||||
|
||||
- name: Check diffs
|
||||
id: diff
|
||||
|
25
.github/workflows/check_misc.yml
vendored
25
.github/workflows/check_misc.yml
vendored
@ -66,30 +66,7 @@ jobs:
|
||||
|
||||
- name: Maintain updated gems list in NEWS
|
||||
run: |
|
||||
#!ruby
|
||||
require 'json'
|
||||
news = File.read("NEWS.md")
|
||||
prev = news[/since the \*+(\d+\.\d+\.\d+)\*+/, 1]
|
||||
prevs = [prev, prev.sub(/\.\d+\z/, '')]
|
||||
%W[default].each do |type|
|
||||
last = JSON.parse(File.read("#{type}_gems.json"))['gems'].filter_map do |g|
|
||||
v = g['versions'].values_at(*prevs).compact.first
|
||||
g = g['gem']
|
||||
g = 'RubyGems' if g == 'rubygems'
|
||||
[g, v] if v
|
||||
end.to_h
|
||||
changed = File.foreach("gems/#{type}_gems").filter_map do |l|
|
||||
next if l.start_with?("#")
|
||||
g, v = l.split(" ", 3)
|
||||
[g, v] unless last[g] == v
|
||||
end
|
||||
news.sub!(/^\*( +)The following #{type} gems? are updated\.\n+\K(?: \1\* .*\n)*/) do
|
||||
mark = "#{$1} * "
|
||||
changed.map {|g, v|"#{mark}#{g} #{v}\n"}.join("")
|
||||
end or next
|
||||
File.write("NEWS.md", news)
|
||||
end
|
||||
shell: ruby {0}
|
||||
ruby tool/update-NEWS-gemlist.rb default
|
||||
|
||||
- name: Check diffs
|
||||
id: diff
|
||||
|
34
tool/update-NEWS-gemlist.rb
Executable file
34
tool/update-NEWS-gemlist.rb
Executable file
@ -0,0 +1,34 @@
|
||||
#!/usr/bin/ruby
|
||||
require 'json'
|
||||
news = File.read("NEWS.md")
|
||||
prev = news[/since the \*+(\d+\.\d+\.\d+)\*+/, 1]
|
||||
prevs = [prev, prev.sub(/\.\d+\z/, '')]
|
||||
|
||||
update = ->(list, type, desc = "updated") do
|
||||
news.sub!(/^\*( +)The following #{type} gems? (?:are|is) #{desc}\.\n(\n*)\K(?: \1\*( +).*\n)*\n*/) do
|
||||
mark = "#{$1&.<< " "}*#{$3 || ' '}"
|
||||
list.map {|g, v|"#{mark}#{g} #{v}\n"}.join("") + $2
|
||||
end
|
||||
end
|
||||
ARGV.each do |type|
|
||||
last = JSON.parse(File.read("#{type}_gems.json"))['gems'].filter_map do |g|
|
||||
v = g['versions'].values_at(*prevs).compact.first
|
||||
g = g['gem']
|
||||
g = 'RubyGems' if g == 'rubygems'
|
||||
[g, v] if v
|
||||
end.to_h
|
||||
changed = File.foreach("gems/#{type}_gems").filter_map do |l|
|
||||
next if l.start_with?("#")
|
||||
g, v = l.split(" ", 3)
|
||||
next unless v
|
||||
[g, v] unless last[g] == v
|
||||
end
|
||||
if type == 'bundled'
|
||||
changed, added = changed.partition {|g, _| last[g]}
|
||||
end
|
||||
update[changed, type] or next
|
||||
if added and !added.empty?
|
||||
update[added, 'default', 'now bundled gems'] or next
|
||||
end
|
||||
File.write("NEWS.md", news)
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user