[DOC] Cache stdgems list
This commit is contained in:
parent
1c49d809f4
commit
424605da7c
45
.github/workflows/check_misc.yml
vendored
45
.github/workflows/check_misc.yml
vendored
@ -23,9 +23,15 @@ jobs:
|
|||||||
done | grep -F .
|
done | grep -F .
|
||||||
working-directory: include
|
working-directory: include
|
||||||
|
|
||||||
- name: Download default gems list
|
- uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: .downloaded-cache
|
||||||
|
key: downloaded-cache
|
||||||
|
|
||||||
|
- name: Download previous gems list
|
||||||
run: |
|
run: |
|
||||||
curl -O https://stdgems.org/default_gems.json
|
curl -o .downloaded-cache/default_gems.json https://stdgems.org/default_gems.json
|
||||||
|
ln -s .downloaded-cache/default_gems.json .
|
||||||
|
|
||||||
- name: Make default gems list
|
- name: Make default gems list
|
||||||
run: |
|
run: |
|
||||||
@ -38,41 +44,46 @@ jobs:
|
|||||||
spec = Gem::Specification.load(f)
|
spec = Gem::Specification.load(f)
|
||||||
"#{spec.name} #{spec.version}"
|
"#{spec.name} #{spec.version}"
|
||||||
end.sort
|
end.sort
|
||||||
File.open("stdlibs", "w") do |f|
|
File.open("gems/default_gems", "w") do |f|
|
||||||
f.puts "RubyGems #{rgver}"
|
f.puts "RubyGems #{rgver}"
|
||||||
f.puts gems
|
f.puts gems
|
||||||
end
|
end
|
||||||
shell: ruby --disable=gems {0}
|
shell: ruby --disable=gems {0}
|
||||||
|
|
||||||
- name: Maintain updated default gems list in NEWS
|
- name: Maintain updated gems list in NEWS
|
||||||
run: |
|
run: |
|
||||||
require 'json'
|
require 'json'
|
||||||
news = File.read("NEWS.md")
|
news = File.read("NEWS.md")
|
||||||
prev = news[/since the \*+(\d+\.\d+\.\d+)\*+/, 1]
|
prev = news[/since the \*+(\d+\.\d+\.\d+)\*+/, 1]
|
||||||
prevs = [prev, prev.sub(/\.\d+\z/, '')]
|
prevs = [prev, prev.sub(/\.\d+\z/, '')]
|
||||||
last = JSON.parse(File.read("default_gems.json"))['gems'].filter_map do |g|
|
%W[default].each do |type|
|
||||||
v = g['versions'].values_at(*prevs).compact.first
|
last = JSON.parse(File.read("#{type}_gems.json"))['gems'].filter_map do |g|
|
||||||
g = g['gem']
|
v = g['versions'].values_at(*prevs).compact.first
|
||||||
g == 'RubyGems' if g == 'rubygems'
|
g = g['gem']
|
||||||
"#{g} #{v}" if v
|
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!(/^\*\s+The following #{type} gems? are updated\.(\n\s+\*\s+)\K.*(?:\1.*)*/) do
|
||||||
|
changed.map {|g, v|"#{g} #{v}"}.join($1)
|
||||||
|
end or exit
|
||||||
|
File.write("NEWS.md", news)
|
||||||
end
|
end
|
||||||
new = File.readlines('stdlibs', chomp: true).grep_v(/^#/)
|
|
||||||
gems = new - last
|
|
||||||
news.sub!(/^\*\s+The following default gems? are updated\.\K(\n\s+\*\s+).*(?:\1.*)*/) do
|
|
||||||
["", gems].join($1)
|
|
||||||
end or exit
|
|
||||||
File.write("NEWS.md", news)
|
|
||||||
shell: ruby {0}
|
shell: ruby {0}
|
||||||
|
|
||||||
- name: Check diffs
|
- name: Check diffs
|
||||||
id: diff
|
id: diff
|
||||||
run: |
|
run: |
|
||||||
git diff --no-ext-diff --ignore-submodules --exit-code NEWS.md
|
git diff --color --no-ext-diff --ignore-submodules --exit-code NEWS.md
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
- name: Commit
|
- name: Commit
|
||||||
run: |
|
run: |
|
||||||
git pull --ff-only origin ${GITHUB_REF#refs/heads/}
|
git pull --ff-only origin ${GITHUB_REF#refs/heads/}
|
||||||
git commit --message="Update stdlib version at ${GITHUB_SHA:0:30} [ci skip]" NEWS.md
|
git commit --message="Update default gems list at ${GITHUB_SHA:0:30} [ci skip]" NEWS.md
|
||||||
git push origin ${GITHUB_REF#refs/heads/}
|
git push origin ${GITHUB_REF#refs/heads/}
|
||||||
env:
|
env:
|
||||||
EMAIL: svn-admin@ruby-lang.org
|
EMAIL: svn-admin@ruby-lang.org
|
||||||
|
Loading…
x
Reference in New Issue
Block a user