forked from wayneeseguin/sequel-model
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rakefile
152 lines (129 loc) · 4.4 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
require "rake"
require "rake/clean"
require "rake/gempackagetask"
require "rake/rdoctask"
require "fileutils"
include FileUtils
##############################################################################
# Configuration
##############################################################################
NAME = "sequel_model"
VERS = "0.4.1"
CLEAN.include ["**/.*.sw?", "pkg/*", ".config", "doc/*", "coverage/*"]
RDOC_OPTS = [
"--quiet",
"--title", "Sequel Model: Lightweight ORM for Ruby",
"--opname", "index.html",
"--line-numbers",
"--main", "README",
"--inline-source"
]
##############################################################################
# RDoc
##############################################################################
task :doc => [:rdoc]
Rake::RDocTask.new do |rdoc|
rdoc.rdoc_dir = "doc/rdoc"
rdoc.options += RDOC_OPTS
rdoc.main = "README"
rdoc.title = "Sequel: Lightweight ORM for Ruby"
rdoc.rdoc_files.add ["README", "COPYING", "lib/sequel_model.rb", "lib/**/*.rb"]
end
##############################################################################
# Gem packaging
##############################################################################
desc "Packages up Sequel."
task :default => [:package]
task :package => [:clean]
spec = Gem::Specification.new do |s|
s.name = NAME
s.rubyforge_project = 'sequel'
s.version = VERS
s.platform = Gem::Platform::RUBY
s.has_rdoc = true
s.extra_rdoc_files = ["README", "CHANGELOG", "COPYING"]
s.rdoc_options += RDOC_OPTS +
["--exclude", "^(examples|extras)\/", "--exclude", "lib/sequel_model.rb"]
s.summary = "Lightweight ORM for Ruby"
s.description = s.summary
s.author = "Sharon Rosner"
s.email = "ciconia@gmail.com"
s.homepage = "http://sequel.rubyforge.org"
s.required_ruby_version = ">= 1.8.4"
case RUBY_PLATFORM
when /java/
s.platform = "jruby"
else
s.platform = Gem::Platform::RUBY
end
s.add_dependency("assistance", '>= 0.1.2')
s.add_dependency("sequel_core", '>= 1.0')
s.files = %w(COPYING README Rakefile) + Dir.glob("{doc,spec,lib}/**/*")
s.require_path = "lib"
end
Rake::GemPackageTask.new(spec) do |p|
p.need_tar = true
p.gem_spec = spec
end
##############################################################################
# installation & removal
##############################################################################
task :install do
sh %{rake package}
sh %{sudo gem install pkg/#{NAME}-#{VERS}}
end
task :install_no_docs do
sh %{rake package}
sh %{sudo gem install pkg/#{NAME}-#{VERS} --no-rdoc --no-ri}
end
task :uninstall => [:clean] do
sh %{sudo gem uninstall #{NAME}}
end
task :tag do
cwd = FileUtils.pwd
sh %{rm -rf doc/*}
sh %{rm -rf pkg/*}
sh %{rm -rf coverage/*}
sh %{cd ../.. && svn copy #{cwd} tags/#{NAME}-#{VERS} && svn commit -m "#{NAME}-#{VERS} tag." tags}
end
##############################################################################
# gem and rdoc release
##############################################################################
task :release => [:package] do
sh %{rubyforge login}
sh %{rubyforge add_release sequel #{NAME} #{VERS} pkg/#{NAME}-#{VERS}.tgz}
sh %{rubyforge add_file sequel #{NAME} #{VERS} pkg/#{NAME}-#{VERS}.gem}
end
##############################################################################
# specs
##############################################################################
require "spec/rake/spectask"
desc "Run specs with coverage"
Spec::Rake::SpecTask.new("spec") do |t|
t.spec_files = FileList["spec/**/*_spec.rb"]
t.spec_opts = File.read("spec/spec.opts").split("\n")
t.rcov_opts = File.read("spec/rcov.opts").split("\n")
t.rcov = true
end
desc "Run specs without coverage"
Spec::Rake::SpecTask.new("spec_no_cov") do |t|
t.spec_files = FileList["spec/**/*_spec.rb"]
t.spec_opts = File.read("spec/spec.opts").split("\n")
end
desc "check documentation coverage"
task :dcov do
sh "find lib -name '*.rb' | xargs dcov"
end
##############################################################################
# Statistics
##############################################################################
STATS_DIRECTORIES = [
%w(Code lib/),
%w(Spec spec/)
].collect { |name, dir| [ name, "./#{dir}" ] }.select { |name, dir| File.directory?(dir) }
desc "Report code statistics (KLOCs, etc) from the application"
task :stats do
require "extra/stats"
verbose = true
CodeStatistics.new(*STATS_DIRECTORIES).to_s
end