Skip to content

Commit ec4c467

Browse files
committed
tool/format-release: Carve out the version format logic
to share it with tool/releng/update-www-meta.rb and another place I'm going to modify next.
1 parent faac344 commit ec4c467

File tree

3 files changed

+49
-66
lines changed

3 files changed

+49
-66
lines changed

tool/format-release

Lines changed: 6 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ end
99

1010
require "open-uri"
1111
require "yaml"
12+
require_relative "./ruby-version"
1213

1314
Diffy::Diff.default_options.merge!(
1415
include_diff_info: true,
@@ -54,27 +55,7 @@ eom
5455
unless /\A(\d+)\.(\d+)\.(\d+)(?:-(?:preview|rc)\d+)?\z/ =~ version
5556
raise "unexpected version string '#{version}'"
5657
end
57-
x = $1.to_i
58-
y = $2.to_i
59-
z = $3.to_i
60-
# previous tag for git diff --shortstat
61-
# It's only for x.y.0 release
62-
if z != 0
63-
prev_tag = nil
64-
elsif y != 0
65-
prev_ver = "#{x}.#{y-1}.0"
66-
prev_tag = version_tag(prev_ver)
67-
else # y == 0 && z == 0
68-
case x
69-
when 3
70-
prev_ver = "2.7.0"
71-
when 4
72-
prev_ver = "3.4.0"
73-
else
74-
raise "it doesn't know what is the previous version of '#{version}'"
75-
end
76-
prev_tag = version_tag(prev_ver)
77-
end
58+
teeny = Integer($3)
7859

7960
uri = "https://cache.ruby-lang.org/pub/tmp/ruby-info-#{version}-draft.yml"
8061
info = YAML.unsafe_load(URI(uri).read)
@@ -92,9 +73,10 @@ eom
9273
tarballs << tarball
9374
end
9475

95-
if prev_tag
76+
if teeny == 0
9677
# show diff shortstat
97-
tag = version_tag(version)
78+
tag = RubyVersion.tag(version)
79+
prev_tag = RubyVersion.tag(RubyVersion.previous(version))
9880
stat = `git -C #{rubydir} diff -l0 --shortstat #{prev_tag}..#{tag}`
9981
files_changed, insertions, deletions = stat.scan(/\d+/)
10082
end
@@ -188,7 +170,7 @@ eom
188170
if /\.0(?:-\w+)?\z/ =~ ver
189171
# preview, rc, or first release
190172
entry <<= <<eom
191-
tag: #{version_tag(ver)}
173+
tag: #{RubyVersion.version_tag(ver)}
192174
stats:
193175
files_changed: #{files_changed}
194176
insertions: #{insertions}
@@ -247,15 +229,6 @@ eom
247229
puts line
248230
end
249231
end
250-
251-
def self.version_tag(version)
252-
major_version = Integer(version.split('.', 2)[0])
253-
if major_version >= 4
254-
"v#{version}"
255-
else
256-
"v#{version.tr('.-', '_')}"
257-
end
258-
end
259232
end
260233

261234
def main

tool/releng/update-www-meta.rb

Lines changed: 6 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#!/usr/bin/env ruby
22
require "open-uri"
33
require "yaml"
4+
require_relative "../ruby-version"
45

56
class Tarball
67
attr_reader :version, :size, :sha1, :sha256, :sha512
@@ -41,27 +42,7 @@ def self.parse(wwwdir, version)
4142
unless /\A(\d+)\.(\d+)\.(\d+)(?:-(?:preview|rc)\d+)?\z/ =~ version
4243
raise "unexpected version string '#{version}'"
4344
end
44-
x = $1.to_i
45-
y = $2.to_i
46-
z = $3.to_i
47-
# previous tag for git diff --shortstat
48-
# It's only for x.y.0 release
49-
if z != 0
50-
prev_tag = nil
51-
elsif y != 0
52-
prev_ver = "#{x}.#{y-1}.0"
53-
prev_tag = version_tag(prev_ver)
54-
else # y == 0 && z == 0
55-
case x
56-
when 3
57-
prev_ver = "2.7.0"
58-
when 4
59-
prev_ver = "3.4.0"
60-
else
61-
raise "it doesn't know what is the previous version of '#{version}'"
62-
end
63-
prev_tag = version_tag(prev_ver)
64-
end
45+
teeny = Integer($3)
6546

6647
uri = "https://cache.ruby-lang.org/pub/tmp/ruby-info-#{version}-draft.yml"
6748
info = YAML.load(URI(uri).read)
@@ -79,9 +60,10 @@ def self.parse(wwwdir, version)
7960
tarballs << tarball
8061
end
8162

82-
if prev_tag
63+
if teeny == 0
8364
# show diff shortstat
84-
tag = version_tag(version)
65+
tag = RubyVersion.tag(version)
66+
prev_tag = RubyVersion.tag(RubyVersion.previous(version))
8567
rubydir = File.expand_path(File.join(__FILE__, '../../../'))
8668
puts %`git -C #{rubydir} diff --shortstat #{prev_tag}..#{tag}`
8769
stat = `git -C #{rubydir} diff --shortstat #{prev_tag}..#{tag}`
@@ -160,7 +142,7 @@ def self.update_releases_yml(ver, xy, ary, wwwdir, files_changed, insertions, de
160142
date = Time.now.utc # use utc to use previous day in midnight
161143
entry = <<eom
162144
- version: #{ver}
163-
tag: #{version_tag(ver)}
145+
tag: #{RubyVersion.tag(ver)}
164146
date: #{date.strftime("%Y-%m-%d")}
165147
post: /en/news/#{date.strftime("%Y/%m/%d")}/ruby-#{ver.tr('.', '-')}-released/
166148
stats:
@@ -196,15 +178,6 @@ def self.update_releases_yml(ver, xy, ary, wwwdir, files_changed, insertions, de
196178
end
197179
File.write(File.join(wwwdir, filename), data)
198180
end
199-
200-
def self.version_tag(version)
201-
major_version = Integer(version.split('.', 2)[0])
202-
if major_version >= 4
203-
"v#{version}"
204-
else
205-
"v#{version.tr('.-', '_')}"
206-
end
207-
end
208181
end
209182

210183
# Confirm current directory is www.ruby-lang.org's working directory

tool/ruby-version.rb

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
module RubyVersion
2+
def self.tag(version)
3+
major_version = Integer(version.split('.', 2)[0])
4+
if major_version >= 4
5+
"v#{version}"
6+
else
7+
"v#{version.tr('.-', '_')}"
8+
end
9+
end
10+
11+
# Return the previous version to be used for release diff links.
12+
# For a ".0" version, it returns the previous ".0" version.
13+
# For a non-".0" version, it returns the previous teeny version.
14+
def self.previous(version)
15+
unless /\A(\d+)\.(\d+)\.(\d+)(?:-(?:preview|rc)\d+)?\z/ =~ version
16+
raise "unexpected version string '#{version}'"
17+
end
18+
major = Integer($1)
19+
minor = Integer($2)
20+
teeny = Integer($3)
21+
22+
if teeny != 0
23+
"#{major}.#{minor}.#{teeny-1}"
24+
elsif minor != 0 # && teeny == 0
25+
"#{major}.#{minor-1}.#{teeny}"
26+
else # minor == 0 && teeny == 0
27+
case major
28+
when 3
29+
"2.7.0"
30+
when 4
31+
"3.4.0"
32+
else
33+
raise "it doesn't know what is the previous version of '#{version}'"
34+
end
35+
end
36+
end
37+
end

0 commit comments

Comments
 (0)