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
|