Skip to content

Commit 5f993b8

Browse files
committed
Split Rakefile into rakelib
1 parent 8e4d9a8 commit 5f993b8

5 files changed

Lines changed: 86 additions & 77 deletions

File tree

Rakefile

Lines changed: 0 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,90 +1,16 @@
11
require "bundler/gem_tasks"
22
require "rake/testtask"
33

4-
helper = Bundler::GemHelper.instance
5-
64
Rake::TestTask.new(:test) do |t|
75
t.test_files = FileList["test/**/test_*.rb"]
86
end
97

108
task :default => :test
119

12-
task "build" => "date_epoch"
13-
task "build" => "changelogs"
14-
15-
task "date_epoch" do
16-
ENV["SOURCE_DATE_EPOCH"] = IO.popen(%W[git -C #{__dir__} log -1 --format=%ct], &:read).chomp
17-
end
18-
19-
def helper.update_gemspec
20-
path = "#{__dir__}/#{gemspec.name}.gemspec"
21-
File.open(path, "r+b") do |f|
22-
if (d = f.read).sub!(/^(version\s*=\s*)".*"/) {$1 + gemspec.version.to_s.dump}
23-
f.rewind
24-
f.truncate(0)
25-
f.print(d)
26-
end
27-
end
28-
end
29-
30-
def helper.commit_bump
31-
sh(%W[git -C #{__dir__} commit -m bump\ up\ to\ #{gemspec.version}
32-
#{gemspec.name}.gemspec])
33-
end
34-
35-
def helper.version=(v)
36-
gemspec.version = v
37-
update_gemspec
38-
commit_bump
39-
end
40-
major, minor, teeny = helper.gemspec.version.segments
41-
42-
task "bump:teeny" do
43-
helper.version = Gem::Version.new("#{major}.#{minor}.#{teeny+1}")
44-
end
45-
4610
task "bump:minor" do
4711
raise "can't bump up minor"
4812
end
4913

5014
task "bump:major" do
5115
raise "can't bump up major"
5216
end
53-
54-
task "bump" => "bump:teeny"
55-
56-
task "tag" do
57-
helper.__send__(:tag_version)
58-
end
59-
60-
def changelog(output, ver = nil, prev = nil)
61-
ver &&= Gem::Version.new(ver)
62-
range = [[prev], [ver, "HEAD"]].map {|ver, branch| ver ? "v#{ver.to_s}" : branch}.compact.join("..")
63-
IO.popen(%W[git log --format=fuller --topo-order --no-merges #{range}]) do |log|
64-
line = log.gets
65-
FileUtils.mkpath(File.dirname(output))
66-
File.open(output, "wb") do |f|
67-
f.print "-*- coding: utf-8 -*-\n\n", line
68-
log.each_line do |line|
69-
line.sub!(/^(?!:)(?:Author|Commit)?(?:Date)?: /, ' \&')
70-
line.sub!(/ +$/, '')
71-
f.print(line)
72-
end
73-
end
74-
end
75-
end
76-
77-
tags = IO.popen(%w[git tag -l v0.*]).grep(/v(.*)/) {$1}
78-
tags.sort_by! {|tag| tag.scan(/\d+/).map(&:to_i)}
79-
tags.inject(nil) do |prev, tag|
80-
task("logs/ChangeLog-#{tag}") {|t| changelog(t.name, tag, prev)}
81-
tag
82-
end
83-
84-
desc "Make ChangeLog"
85-
task "ChangeLog", [:ver, :prev] do |t, ver: nil, prev: tags.last|
86-
changelog(t.name, ver, prev)
87-
end
88-
changelogs = ["ChangeLog", *tags.map {|tag| "logs/ChangeLog-#{tag}"}]
89-
task "changelogs" => changelogs
90-
CLOBBER.concat(changelogs) << "logs"

rakelib/changelogs.rake

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
task "build" => "changelogs"
2+
3+
changelog = proc do |output, ver = nil, prev = nil|
4+
ver &&= Gem::Version.new(ver)
5+
range = [[prev], [ver, "HEAD"]].map {|ver, branch| ver ? "v#{ver.to_s}" : branch}.compact.join("..")
6+
IO.popen(%W[git log --format=fuller --topo-order --no-merges #{range}]) do |log|
7+
line = log.gets
8+
FileUtils.mkpath(File.dirname(output))
9+
File.open(output, "wb") do |f|
10+
f.print "-*- coding: utf-8 -*-\n\n", line
11+
log.each_line do |line|
12+
line.sub!(/^(?!:)(?:Author|Commit)?(?:Date)?: /, ' \&')
13+
line.sub!(/ +$/, '')
14+
f.print(line)
15+
end
16+
end
17+
end
18+
end
19+
20+
tags = IO.popen(%w[git tag -l v[0-9]*]).grep(/v(.*)/) {$1}
21+
tags.sort_by! {|tag| tag.scan(/\d+/).map(&:to_i)}
22+
tags.inject(nil) do |prev, tag|
23+
task("logs/ChangeLog-#{tag}") {|t| changelog[t.name, tag, prev]}
24+
tag
25+
end
26+
27+
desc "Make ChangeLog"
28+
task "ChangeLog", [:ver, :prev] do |t, ver: nil, prev: tags.last|
29+
changelog[t.name, ver, prev]
30+
end
31+
32+
changelogs = ["ChangeLog", *tags.map {|tag| "logs/ChangeLog-#{tag}"}]
33+
task "changelogs" => changelogs
34+
CLOBBER.concat(changelogs) << "logs"

rakelib/epoch.rake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
task "build" => "date_epoch"
2+
3+
task "date_epoch" do
4+
ENV["SOURCE_DATE_EPOCH"] = IO.popen(%W[git -C #{__dir__} log -1 --format=%ct], &:read).chomp
5+
end

rakelib/version.rake

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
class << (helper = Bundler::GemHelper.instance)
2+
def update_gemspec
3+
path = gemspec.loaded_from
4+
File.open(path, "r+b") do |f|
5+
d = f.read
6+
if d.sub!(/^(_VERSION\s*=\s*)".*"/) {$1 + gemspec.version.to_s.dump}
7+
f.rewind
8+
f.truncate(0)
9+
f.print(d)
10+
end
11+
end
12+
end
13+
14+
def commit_bump
15+
sh(%W[git -C #{__dir__} commit -m bump\ up\ to\ #{gemspec.version}
16+
#{gemspec.loaded_from}])
17+
end
18+
19+
def version=(v)
20+
gemspec.version = v
21+
update_gemspec
22+
commit_bump
23+
end
24+
end
25+
26+
major, minor, teeny = helper.gemspec.version.segments
27+
28+
task "bump:teeny" do
29+
helper.version = Gem::Version.new("#{major}.#{minor}.#{teeny+1}")
30+
end
31+
32+
task "bump:minor" do
33+
helper.version = Gem::Version.new("#{major}.#{minor+1}.0")
34+
end
35+
36+
task "bump:major" do
37+
helper.version = Gem::Version.new("#{major+1}.0.0")
38+
end
39+
40+
task "bump" => "bump:teeny"
41+
42+
task "tag" do
43+
helper.__send__(:tag_version)
44+
end

ruby2_keywords.gemspec

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
version = "0.0.5"
2-
abort "Version must not reach 1" if version[/\d+/].to_i >= 1
1+
_VERSION = "0.0.5"
2+
abort "Version must not reach 1" if _VERSION[/\d+/].to_i >= 1
33

44
Gem::Specification.new do |s|
55
s.name = "ruby2_keywords"
6-
s.version = version
6+
s.version = _VERSION
77
s.summary = "Shim library for Module#ruby2_keywords"
88
s.homepage = "https://github.com/ruby/ruby2_keywords"
99
s.licenses = ["Ruby", "BSD-2-Clause"]

0 commit comments

Comments
 (0)