@@ -100,48 +100,49 @@ jobs:
100100 gems : ${{ steps.diff.outputs.gems }}
101101 if : ${{ steps.diff.outputs.update }}
102102
103- - name : Fetch more logs
104- id : logs
105- run : |
106- file=gems/bundled_gems days=30
107- { echo days=$days; echo file=$file; } >> $GITHUB_OUTPUT
108- since=$(date --date=-$[days * 2 + 10]day +'%F')
109- set -x
110- git sparse-checkout set --no-cone /$file
111- git fetch --shallow-since="$since" --no-tags origin ${GITHUB_REF}
112-
113103 - name : Development revision of bundled gems
114104 run : |
115105 #!ruby
116- file = ENV["file"]
117- days = ENV["days"].to_i
118- today = Time.new("#{ENV['TODAY']}T00:00:00Z").to_i
119- limit = today - days * 86400
106+ file = "gems/bundled_gems"
107+
108+ SECONDS_IN_DAY = 86400
109+ today = Time.new("#{ENV['TODAY']}Z")
110+ if !(december = today.month == 12)
111+ days = 30
112+ elsif (days = 26 - today.day).positive?
113+ days += 4
114+ else
115+ puts "::info:: just after released"
116+ exit
117+ end
120118
121- ok = true
119+ since = "#{today.year-1}-12-26"
120+ ref = ENV['GITHUB_REF']
121+ puts "::group::\e[94mfetching \e[1m#{file}\e[22m since \e[1m#{since}\e[22m from \e[1m#{ref}\e[m"
122+ system(*%W[git fetch --shallow-since=#{since} --no-tags origin #{ref}], exception: true)
123+ puts "::endgroup::"
124+
125+ puts "\e[94mchecking development version bundled gems older than \e[1m#{days}\e[22m days\e[m"
126+ limit = today.to_i - days * SECONDS_IN_DAY
127+ old = 0
122128 IO.popen(%W"git blame --line-porcelain -- #{file}") do |blame|
123129 while head = blame.gets("\n\t") and s = blame.gets
124130 next unless (gem = s.split(/\s+|#.*/)).size > 3
125131 time = head[/^committer-time \K\d+/].to_i
126132 next if (d = limit - time) <= 0
127- d /= 86400
133+ d /= SECONDS_IN_DAY
128134 line = head[/\A\h+ \d+ \K\d+/].to_i
129- level = if d < days; 'warning'; else ok = false ; 'error'; end
135+ level = if d < days; 'warning'; else old += 1 ; 'error'; end
130136 d += days
131137 puts "::#{level} file=#{file},line=#{line},title=Older than #{d} days::#{gem[0]} #{gem[3]}"
132138 end
133139 end
134- # exit ok
140+ abort "::error title=Too long-standing gems::The release comes soon." if december and old.nonzero?
135141 shell : ruby {0}
136142 env :
137143 file : ${{ steps.logs.outputs.file }}
138144 days : ${{ steps.logs.outputs.days }}
139145
140- - name : Restore sparse checkout
141- run : |
142- git sparse-checkout disable
143- if : always()
144-
145146 - name : Install libraries
146147 uses : ./.github/actions/setup/ubuntu
147148 if : ${{ steps.diff.outputs.gems }}
0 commit comments