我正在构建一个管道来为Rubygems部署gem。普遍的共识是,它将读取github库中的更改并在版本中迭代次要内容。我正在努力想出如何做到这一点,因为它代表一个makefile将用于执行迭代version.rb
文件的东西:
例如:make deploy update=minor
或类似的东西,但我不知道如何以'ruby'y的方式迭代文件,而不是试图修改它,好像它只是另一个文本文件。
当前版本文件如下所示:
module Pugin
release_no = 0
patch_no = 1
hotfix_no = 0
VERSION = release_no.to_s + "." + patch_no.to_s + "." + hotfix_no.to_s
end
答案 0 :(得分:6)
没有理由重新发明轮子,有Gem::Version
:
require 'rubygems/version.rb'
#⇒ false
gv = Gem::Version.new "1.0.2.a"
#⇒ #<Gem::Version "1.0.2.a">
gv.segments
#⇒ [1, 0, 2, "a"]
gv.release
#⇒ #<Gem::Version "1.0.2">
gv.bump
#⇒ #<Gem::Version "1.1">
我相信你明白了。
答案 1 :(得分:1)
最简单的方法可能是将纯版本移动到文本文件,然后在version.rb中读取它
version.txt:
"1.2.3"
pugin.rb:
module Pugin
VERSION = File.read("version.txt").split("\n").first
end
要增加版本,请使用解析版本的ruby脚本:
major, minor, patch = File.read("version.txt").
split("\n").
first.
split(".").
map(&:to_i)
然后您可以轻松地增加所需的部分并将其写回文件
minor += 1
File.open("version.txt", "wb") {|f| f.write("#{major}.#{minor}.#{patch}")}