10000 Added rakelib · ruby/optparse@6e66cf7 · GitHub
[go: up one dir, main page]

Skip to content

Commit 6e66cf7

Browse files
Added rakelib
1 parent 65d8aff commit 6e66cf7

File tree

4 files changed

+88
-0
lines changed

4 files changed

+88
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
/_yardoc/
44
/coverage/
55
/doc/
6+
/logs/
67
/pkg/
78
/spec/reports/
89
/tmp/
910
/Gemfile.lock
11+
/ChangeLog

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

0 commit comments

Comments
 (0)
0