增加版本的最后一部分

时间:2018-07-23 13:56:30

标签: ruby

将版本的最后部分增加1(不使用库)的最佳方法是什么。

示例:

Gem::Version.new("2.0.31")Gem::Version.new("2.0.32") Gem::Version.new("2.0.3.0")Gem::Version.new("2.0.3.1")

如果输出是字符串,那也没关系

2 个答案:

答案 0 :(得分:2)

使用Gem::Version#segments

Gem::Version.new("2.0.31").
  segments.
  dup.
  tap { |segments| segments.push(segments.pop.succ) }.
  join('.')
#⇒ "2.0.32"

答案 1 :(得分:1)

这是我之前在rake任务中使用的一种辅助方法,用于版本提升。

根据您的需要随意扩展它-例如如果要添加第四个数字;或支持名为alpha-xpre-x的版本;或支持“跳最后一位”的选项(无论有多少位)。

但是,我倾向于不支持“加最后一位数字”选项,因为这很含糊。

def bump(version, type)
  major, minor, patch = version.split('.').map(&:to_i)

  bumped = case type
           when :major
             [major + 1, 0, 0]
           when :minor
             [major, minor + 1, 0]
           when :patch
             [major, minor, patch + 1]
           else
             raise "Don't know how to bump for #{type}"
           end 
  bumped.join('.')
end


bump("2.1.31", :patch) #=> "2.1.32"
bump("2.1.31", :minor) #=> "2.2.0"
bump("2.1.31", :major) #=> "3.0.0"