-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRakefile
158 lines (138 loc) · 3.23 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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
OMNIAUTH_GEMS = %w(oa-basic oa-core oa-oauth oa-openid oa-enterprise oa-more)
def each_gem(action, &block)
OMNIAUTH_GEMS.each do |gem|
puts "#{gem} #{action}"
Dir.chdir(gem) do
yield
end
end
end
def version
File.read("VERSION").strip
end
def bump_version(position)
v = version.split('.').map{|s| s.to_i}
v[position] += 1
write_version(*v)
end
def write_version(major, minor, patch)
v = version.split('.').map{|s| s.to_i}
v[0] = major unless major.nil?
v[1] = minor unless minor.nil?
v[2] = patch unless patch.nil?
File.open("VERSION", 'w') do |f|
f.write v.join('.')
end
each_gem('is writing version file...') do
File.open("VERSION", 'w') do |f|
f.write v.join('.')
end
end
display_version
end
def display_version
puts "Version is now #{version}"
end
desc "Display the current version"
task :version do
display_version
end
namespace :version do
desc "Write version with MAJOR, MINOR, and PATCH level env variables."
task :write do
write_version(ENV['MAJOR'], ENV['MINOR'], ENV['PATCH'])
end
namespace :bump do
desc "Increment the major version"
task :major do
bump_version(0)
end
desc "Increment the minor version"
task :minor do
bump_version(1)
end
desc "Increment the patch version"
task :patch do
bump_version(2)
end
end
end
desc "Run specs for all of the gems"
task :spec do
error_gems = []
each_gem('specs are running...') do |gem|
unless system('bundle exec rake spec')
error_gems << gem
end
end
puts
if error_gems.any?
puts "#{error_gems.size} gems with failing specs: #{error_gems.join(', ')}"
exit(1)
else
puts "All gems passed specs."
end
end
desc "Release all gems to gemcutter and create a tag"
task :release => ['tag', 'clean', 'build', 'publish']
task :tag do
system("git tag v#{version.join}")
system('git push origin --tags')
end
task :publish do
each_gem('is releasing to Rubygems...') do
system("gem push pkg/#{gem}-#{version.join}.gem")
end
system("gem push pkg/omniauth-#{version.join}.gem")
end
def build_gem
system('gem build omniauth.gemspec')
FileUtils.mkdir_p('pkg')
FileUtils.mv("omniauth-#{version}.gem", 'pkg')
end
def install_gem
system("gem install pkg/omniauth-#{version}.gem")
end
desc "Build gem files for all projects"
task :build do
each_gem('is building...') do
system('rake build')
end
build_gem
end
desc "Install gems for all projects"
task :install do
each_gem('is installing...') do
system('rake install')
end
build_gem
install_gem
end
desc "Clean pkg and other stuff"
task :clean do
OMNIAUTH_GEMS.each do |gem|
Dir.chdir(gem) do
%w(tmp pkg coverage dist).each do |directory|
FileUtils.rm_rf directory
end
end
%w(tmp pkg coverage dist).each do |directory|
FileUtils.rm_rf directory
end
end
Dir["**/*.gem"].each do |gem|
FileUtils.rm_rf gem
end
end
task :default => :spec
task :test => :spec
namespace :doc do
require 'yard'
YARD::Rake::YardocTask.new do |task|
task.files = OMNIAUTH_GEMS.map{|gem| ["#{gem}/lib/**/*.rb"]} + ['README.markdown', 'LICENSE']
task.options = [
'--markup', 'markdown',
'--markup-provider', 'maruku',
]
end
end