forked from travis-ci/travis.rb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rakefile
63 lines (49 loc) · 1.9 KB
/
Rakefile
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
# encoding: utf-8
$LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
windows = RUBY_PLATFORM =~ /mswin|mingw/
desc "run specs"
task(:spec) { ruby "-S rspec spec#{" -c" unless windows}" }
desc "generate gemspec, update readme"
task :update => :completion do
require 'travis/version'
content = File.read('travis.gemspec')
# fetch data
fields = {
:authors => `git shortlog -sn`.b.scan(/[^\d\s].*/),
:email => `git shortlog -sne`.b.scan(/[^<]+@[^>]+/),
:files => `git ls-files`.b.split("\n").reject { |f| f =~ /^(\.|Gemfile)/ }
}
# :(
fields[:email].delete("[email protected]")
fields[:authors]
# insert data
fields.each do |field, values|
updated = " s.#{field} = ["
updated << values.map { |v| "\n %p" % v }.join(',')
updated << "\n ]"
content.sub!(/ s\.#{field} = \[\n( .*\n)* \]/, updated)
end
# set version
content.sub! /(s\.version.*=\s+).*/, "\\1\"#{Travis::VERSION}\""
# escape unicode
content.gsub!(/./) { |c| c.bytesize > 1 ? "\\u{#{c.codepoints.first.to_s(16)}}" : c }
File.open('travis.gemspec', 'w') { |f| f << content }
readme = File.read('README.md').b
readme.gsub! /^(\s+\$ travis version\n\s+).*$/, "\\1#{Travis::VERSION}"
readme.gsub! /(gem install travis -v )\S+/, "\\1#{Travis::VERSION}"
readme.gsub! /^\*\*#{Regexp.escape(Travis::VERSION)}\*\* \(not yet released?\)\n/i, "**#{Travis::VERSION}** (#{Time.now.strftime("%B %-d, %Y")})\n"
Travis::CLI.commands.each do |c|
readme.sub! /^( \* \[\`#{c.command_name}\`\]\(##{c.command_name}\)).*$/, "\\1 - #{c.description}"
end
File.write('README.md', readme)
end
task :completion do
require 'travis/tools/completion'
Travis::Tools::Completion.compile
end
task 'travis.gemspec' => :update
task 'README.md' => :update
task :gemspec => :update
task :default => :spec
task :default => :gemspec unless windows or RUBY_VERSION < '2.0'
task :test => :spec