File: version.rake

package info (click to toggle)
ruby-test-unit-ruby-core 1.0.14-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 164 kB
  • sloc: ruby: 1,376; makefile: 4
file content (77 lines) | stat: -rw-r--r-- 2,050 bytes parent folder | download
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
class << (helper = Bundler::GemHelper.instance)
  SOURCE_PATH = "test-unit-ruby-core.gemspec"
  VERSION_PATTERN = /\.version\s*=\s*(["'])\K.*?(?=\1)/

  def update_source_version(path = SOURCE_PATH, pattern = VERSION_PATTERN)
    File.open(path, "r+b") do |f|
      d = f.read
      if d.sub!(pattern) {version.to_s}
        f.rewind
        f.truncate(0)
        f.print(d)
      end
    end
  end

  def commit_bump
    sh(%W[git commit -m Bump\ up\ to\ #{gemspec.version}
          #{SOURCE_PATH}])
  end

  def version=(v)
    gemspec.version = v
    update_source_version
    commit_bump
  end
end

major, minor, teeny, dev = helper.gemspec.version.segments

namespace :dev do
  task "bump:teeny", ['dev'] do |_, args|
    dev = args[:dev] and dev = ".#{dev}"
    helper.version = Gem::Version.new("#{major}.#{minor}.#{teeny+1}#{dev}")
  end

  task "bump:minor", ['dev'] do |_, args|
    dev = args[:dev] and dev = ".#{dev}"
    helper.version = Gem::Version.new("#{major}.#{minor+1}.0#{dev}")
  end

  task "bump:major", ['dev'] do |_, args|
    dev = args[:dev] and dev = ".#{dev}"
    helper.version = Gem::Version.new("#{major+1}.0.0#{dev}")
  end

  task "bump" => "bump:teeny"

  task "tag" do
    helper.__send__(:tag_version)
  end

  task "require", ['version'] do |_, args|
    version = args['version']
    files = []
    spec = helper.spec_path
    content = File.read(spec)
    if content.sub!(/\.required_ruby_version *= *Gem::Requirement.new\(">=\s*\K.*(?="\))/) do
         [$&, version].max
       end
      File.write(spec, content)
      files << spec
    end
    min_version = Gem::Version.new(version).segments[0, 2].join(".")
    Dir.glob(".github/workflows/*.yml") do |yml|
      content = File.read(yml)
      if content.sub!(/^( +)ruby-versions:\n(?:(?:\1 +.*)?\n)*?\1 +min_version: \K.*/) do
           [$&, min_version].max
         end
        File.write(yml, content)
        files << yml
      end
    end
    sh(*%w[git commit -m],
       "Update minimum required version to #{version}",
       *files)
  end
end