summaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2021-12-18 01:27:08 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-12-18 10:33:04 +0900
commit424605da7c0c24a04bfbe21d8e30dabe17bdcad8 (patch)
tree198c877e110c9891972a3a403086d22b20a42e62 /.github
parent1c49d809f470de74d5697ce2e23a830b12f2c686 (diff)
[DOC] Cache stdgems list
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/check_misc.yml45
1 files changed, 28 insertions, 17 deletions
diff --git a/.github/workflows/check_misc.yml b/.github/workflows/check_misc.yml
index 0161cb1135..27365d81a5 100644
--- a/.github/workflows/check_misc.yml
+++ b/.github/workflows/check_misc.yml
@@ -23,9 +23,15 @@ jobs:
done | grep -F .
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: |
- 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
run: |
@@ -38,41 +44,46 @@ jobs:
spec = Gem::Specification.load(f)
"#{spec.name} #{spec.version}"
end.sort
- File.open("stdlibs", "w") do |f|
+ File.open("gems/default_gems", "w") do |f|
f.puts "RubyGems #{rgver}"
f.puts gems
end
shell: ruby --disable=gems {0}
- - name: Maintain updated default gems list in NEWS
+ - name: Maintain updated gems list in NEWS
run: |
require 'json'
news = File.read("NEWS.md")
prev = news[/since the \*+(\d+\.\d+\.\d+)\*+/, 1]
prevs = [prev, prev.sub(/\.\d+\z/, '')]
- last = JSON.parse(File.read("default_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
+ %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!(/^\*\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
- 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}
- name: Check diffs
id: diff
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
- name: Commit
run: |
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/}
env:
EMAIL: svn-admin@ruby-lang.org