blob: 3bbec576e13ad4bbbffb04972ce10eddb6bdeb8c (
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#!/usr/bin/env ruby
module RubyVersion
def self.tag(version)
major_version = Integer(version.split('.', 2)[0])
if major_version >= 4
"v#{version}"
else
"v#{version.tr('.-', '_')}"
end
end
# Return the previous version to be used for release diff links.
# For a ".0" version, it returns the previous ".0" version.
# For a non-".0" version, it returns the previous teeny version.
def self.previous(version)
unless /\A(\d+)\.(\d+)\.(\d+)(?:-(?:preview|rc)\d+)?\z/ =~ version
raise "unexpected version string '#{version}'"
end
major = Integer($1)
minor = Integer($2)
teeny = Integer($3)
if teeny != 0
"#{major}.#{minor}.#{teeny-1}"
elsif minor != 0 # && teeny == 0
"#{major}.#{minor-1}.#{teeny}"
else # minor == 0 && teeny == 0
case major
when 3
"2.7.0"
when 4
"3.4.0"
else
raise "it doesn't know what is the previous version of '#{version}'"
end
end
end
end
if __FILE__ == $0
case ARGV[0]
when "tag"
print RubyVersion.tag(ARGV[1])
when "previous"
print RubyVersion.previous(ARGV[1])
when "previous-tag"
print RubyVersion.tag(RubyVersion.previous(ARGV[1]))
else
"#{$0}: unexpected command #{ARGV[0].inspect}"
end
end
|