ruby-changes:70300
From: Nobuyoshi <ko1@a...>
Date: Sat, 18 Dec 2021 10:33:51 +0900 (JST)
Subject: [ruby-changes:70300] 424605da7c (master): [DOC] Cache stdgems list
https://git.ruby-lang.org/ruby.git/commit/?id=424605da7c From 424605da7c0c24a04bfbe21d8e30dabe17bdcad8 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada <nobu@r...> Date: Sat, 18 Dec 2021 01:27:08 +0900 Subject: [DOC] Cache stdgems list --- .github/workflows/check_misc.yml | 45 +++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/.github/workflows/check_misc.yml b/.github/workflows/check_misc.yml index 0161cb1135f..27365d81a59 100644 --- a/.github/workflows/check_misc.yml +++ b/.github/workflows/check_misc.yml @@ -23,9 +23,15 @@ jobs: https://github.com/ruby/ruby/blob/trunk/.github/workflows/check_misc.yml#L23 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: https://github.com/ruby/ruby/blob/trunk/.github/workflows/check_misc.yml#L44 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@r... -- cgit v1.2.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/