summaryrefslogtreecommitdiff
path: root/tool/update-NEWS-refs.rb
blob: 4ee392f90c285b044f17ce7efe0bb084c8ed6820 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Usage: ruby tool/update-NEWS-refs.rb

orig_src = File.read(File.join(__dir__, "../NEWS.md"))
lines = orig_src.lines(chomp: true)

links = {}
while lines.last =~ %r{\A\[(?:Feature|Bug) #(\d+)\]:\s+https://bugs\.ruby-lang\.org/issues/\1\z}
  links[$1] = lines.pop
end

if links.empty? || lines.last != ""
  raise "NEWS.md must end with a sequence of links to bugs.ruby-lang.org like \"[Feature #XXXXX]: https://bugs.ruby-lang.org/issues/XXXXX\""
end

new_src = lines.join("\n").gsub(/\[?\[(Feature|Bug)\s+#(\d+)\]\]?/) do
  links[$2] ||= "[#$1 ##$2]: ".ljust(18) + "https://bugs.ruby-lang.org/issues/#$2"
  "[[#$1 ##$2]]"
end.chomp + "\n\n" + links.keys.sort.map {|k| links[k] }.join("\n") + "\n"

if orig_src != new_src
  print "Update NEWS.md? [y/N]"
  $stdout.flush
  if gets.chomp == "y"
    File.write(File.join(__dir__, "../NEWS.md"), new_src)
  end
end