Skip to content

Commit 09b0532

Browse files
committed
Add version.rake
1 parent c0ace85 commit 09b0532

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

rakelib/version.rake

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
class << (helper = Bundler::GemHelper.instance)
2+
SOURCE_PATH = "test-unit-ruby-core.gemspec"
3+
VERSION_PATTERN = /\.version\s*=\s*(["'])\K.*?(?=\1)/
4+
5+
def update_source_version(path = SOURCE_PATH, pattern = VERSION_PATTERN)
6+
File.open(path, "r+b") do |f|
7+
d = f.read
8+
if d.sub!(pattern) {version.to_s}
9+
f.rewind
10+
f.truncate(0)
11+
f.print(d)
12+
end
13+
end
14+
end
15+
16+
def commit_bump
17+
sh(%W[git commit -m Bump\ up\ to\ #{gemspec.version}
18+
#{SOURCE_PATH}])
19+
end
20+
21+
def version=(v)
22+
gemspec.version = v
23+
update_source_version
24+
commit_bump
25+
end
26+
end
27+
28+
major, minor, teeny, dev = helper.gemspec.version.segments
29+
30+
namespace :dev do
31+
task "bump:teeny", ['dev'] do |_, args|
32+
dev = args[:dev] and dev = ".#{dev}"
33+
helper.version = Gem::Version.new("#{major}.#{minor}.#{teeny+1}#{dev}")
34+
end
35+
36+
task "bump:minor", ['dev'] do |_, args|
37+
dev = args[:dev] and dev = ".#{dev}"
38+
helper.version = Gem::Version.new("#{major}.#{minor+1}.0#{dev}")
39+
end
40+
41+
task "bump:major", ['dev'] do |_, args|
42+
dev = args[:dev] and dev = ".#{dev}"
43+
helper.version = Gem::Version.new("#{major+1}.0.0#{dev}")
44+
end
45+
46+
task "bump" => "bump:teeny"
47+
48+
task "tag" do
49+
helper.__send__(:tag_version)
50+
end
51+
52+
task "require", ['version'] do |_, args|
53+
version = args['version']
54+
files = []
55+
spec = helper.spec_path
56+
content = File.read(spec)
57+
if content.sub!(/\.required_ruby_version *= *Gem::Requirement.new\(">=\s*\K.*(?="\))/) do
58+
[$&, version].max
59+
end
60+
File.write(spec, content)
61+
files << spec
62+
end
63+
min_version = Gem::Version.new(version).segments[0, 2].join(".")
64+
Dir.glob(".github/workflows/*.yml") do |yml|
65+
content = File.read(yml)
66+
if content.sub!(/^( +)ruby-versions:\n(?:(?:\1 +.*)?\n)*?\1 +min_version: \K.*/) do
67+
[$&, min_version].max
68+
end
69+
File.write(yml, content)
70+
files << yml
71+
end
72+
end
73+
sh(*%w[git commit -m],
74+
"Update minimum required version to #{version}",
75+
*files)
76+
end
77+
end

0 commit comments

Comments
 (0)