代码之家  ›  专栏  ›  技术社区  ›  Daniel Murali

增加版本的最后一部分

  •  -2
  • Daniel Murali  · 技术社区  · 6 年前

    将版本的最后一部分增加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 回复  |  直到 6 年前
        1
  •  2
  •   Aleksei Matiushkin    6 年前

    使用 Gem::Version#segments :

    Gem::Version.new("2.0.31").
      segments.
      dup.
      tap { |segments| segments.push(segments.pop.succ) }.
      join('.')
    #⇒ "2.0.32"
    
        2
  •  1
  •   Tom Lord    6 年前

    这里有一个助手方法,我将其作为 rake 之前的任务,用于版本缓冲。

    请根据您的需要随意扩展它-例如,如果您想添加第四个数字;或者支持名为 alpha-x pre-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"