Skip to content

Commit c45ddde

Browse files
hsbtclaude
andcommitted
Tidy up NEWS.md updater leftovers
* Drop the bundler- tag-prefix handling from fetch_release_range, collect_gem_updates, and format_release_diff. collect_gem_updates skips the bundler gem before any of these run, so the special-case prefix stripping never had a chance to fire. * Rename fetch_versions_to_from_news to fetch_versions_from_news now that the "to" side comes from load_current_versions; the function only feeds the "from" baseline. * Use Enumerable#to_h to build result_by_name, and remove a couple of comments that just restate the immediately following code. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 1750626 commit c45ddde

1 file changed

Lines changed: 11 additions & 17 deletions

File tree

tool/update-NEWS-github-release.rb

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,14 @@ def load_versions(arg)
8181
elsif arg.match?(/^\d+\.\d+(?:\.\d+)?$/)
8282
fetch_default_gems_versions(arg)
8383
elsif arg.downcase == "news" || arg =~ %r{https?://.*/NEWS\.md}
84-
fetch_versions_to_from_news(arg)
84+
fetch_versions_from_news(arg)
8585
else
8686
abort "Invalid argument: #{arg}. Provide a file path or a Ruby version (e.g., 3.4)."
8787
end
8888
end
8989

9090
# Build a gem=>version map by parsing the "## Stdlib updates" section from Ruby's NEWS.md
91-
def fetch_versions_to_from_news(arg)
91+
def fetch_versions_from_news(arg)
9292
if arg.downcase == "news"
9393
body = read_local_news_md
9494
else
@@ -216,11 +216,11 @@ def fetch_release_range(name, from_version, to_version, org, repo)
216216
end
217217

218218
# Keep only version-like tags and sort ascending by semantic version
219-
releases = releases.select { |t| t =~ /^v\d/ || t =~ /^\d/ || t =~ /^bundler-\d/ }
220-
releases = releases.sort_by { |t| Gem::Version.new(t.sub(/^bundler-/, "").sub(/^v/, "").tr("_", ".")) }
219+
releases = releases.select { |t| t =~ /^v\d/ || t =~ /^\d/ }
220+
releases = releases.sort_by { |t| Gem::Version.new(t.sub(/^v/, "").tr("_", ".")) }
221221

222-
start_index = releases.index("v#{from_version}") || releases.index(from_version) || releases.index("bundler-v#{from_version}")
223-
end_index = releases.index("v#{to_version}") || releases.index(to_version) || releases.index("bundler-v#{to_version}")
222+
start_index = releases.index("v#{from_version}") || releases.index(from_version)
223+
end_index = releases.index("v#{to_version}") || releases.index(to_version)
224224
return nil unless start_index && end_index
225225

226226
range = releases[start_index + 1..end_index]
@@ -246,7 +246,7 @@ def collect_gem_updates(versions_from, versions_to)
246246

247247
footnote_links = release_range.map do |rel|
248248
{
249-
ref: "#{name}-#{rel.sub(/^bundler-/, '')}",
249+
ref: "#{name}-#{rel}",
250250
url: "https://github.com/#{org}/#{repo}/releases/tag/#{rel}",
251251
}
252252
end
@@ -265,8 +265,7 @@ def collect_gem_updates(versions_from, versions_to)
265265

266266
def format_release_diff(result)
267267
links = result[:release_range].map do |rel|
268-
tag = rel.sub(/^bundler-/, "")
269-
"[#{tag}][#{result[:name]}-#{tag}]"
268+
"[#{rel}][#{result[:name]}-#{rel}]"
270269
end
271270
" * #{result[:from_version]} to #{links.join(', ')}"
272271
end
@@ -293,25 +292,20 @@ def update_news_md(results)
293292
content = File.read(news_path)
294293
lines = content.lines
295294

296-
# Build a lookup: gem name => result
297-
result_by_name = {}
298-
results.each { |r| result_by_name[r[:name]] = r }
295+
result_by_name = results.to_h { |r| [r[:name], r] }
299296

300297
new_lines = []
301298
i = 0
302299
while i < lines.length
303300
line = lines[i]
304301

305-
# Check if this line is a gem bullet like "* gemname x.y.z"
306302
if line =~ /^\* ([A-Za-z0-9_\-]+)\s+(\d+(?:\.\d+){0,3})\b/
307303
gem_name = $1
308304

309305
new_lines << line
310306

311-
if result_by_name.key?(gem_name)
312-
r = result_by_name[gem_name]
313-
314-
# Skip any existing sub-bullet lines that follow (lines starting with spaces + *)
307+
if (r = result_by_name[gem_name])
308+
# Skip any existing sub-bullet lines that follow
315309
while i + 1 < lines.length && lines[i + 1] =~ /^\s+\*/
316310
i += 1
317311
end

0 commit comments

Comments
 (0)