]> git.wincent.com - mkdtemp.git/blob - Rakefile
Changes to rakefile to get the extension building
[mkdtemp.git] / Rakefile
1 # Copyright 2007-2008 Wincent Colaiuta
2 # This program is free software: you can redistribute it and/or modify
3 # it under the terms of the GNU General Public License as published by
4 # the Free Software Foundation, either version 3 of the License, or
5 # (at your option) any later version.
6 #
7 # This program is distributed in the hope that it will be useful,
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10 # GNU General Public License for more details.
11 #
12 # You should have received a copy of the GNU General Public License
13 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
14
15 require 'rake'
16 require 'rake/clean'
17 require 'rake/gempackagetask'
18 require 'rubygems'
19 require 'spec/rake/spectask'
20 require 'spec/rake/verify_rcov'
21 require File.join(File.dirname(__FILE__), 'lib', 'mkdtemp', 'version.rb')
22
23 CLEAN.include   Rake::FileList['**/*.so', '**/*.bundle', '**/*.o', '**/mkmf.log', '**/Makefile']
24
25 task :default => :all
26
27 desc 'Build all and run all specs'
28 task :all => [:make, :spec]
29
30 desc 'Run specs with coverage'
31 Spec::Rake::SpecTask.new('coverage') do |t|
32   t.spec_files  = FileList['spec/**/*_spec.rb']
33   t.rcov        = true
34   t.rcov_opts = ['--exclude', "spec"]
35 end
36
37 desc 'Run specs'
38 Spec::Rake::SpecTask.new('spec') do |t|
39   t.spec_files  = FileList['spec/**/*_spec.rb']
40 end
41
42 desc 'Verify that test coverage is above minimum threshold'
43 RCov::VerifyTask.new(:verify => :spec) do |t|
44   t.threshold   = 99.2 # never adjust expected coverage down, only up
45   t.index_html  = 'coverage/index.html'
46 end
47
48 desc 'Generate specdocs for inclusions in RDoc'
49 Spec::Rake::SpecTask.new('specdoc') do |t|
50   t.spec_files  = FileList['spec/**/*_spec.rb']
51   t.spec_opts   = ['--format', 'rdoc']
52   t.out         = 'specdoc.rd'
53 end
54
55 desc 'Build extension'
56 task :make do |t|
57   system %{cd ext && ruby ./extconf.rb && make && cd -}
58 end
59
60 SPEC = Gem::Specification.new do |s|
61   s.name              = 'mkdtemp'
62   s.version           = Dir::Mkdtemp::VERSION
63   s.author            = 'Wincent Colaiuta'
64   s.email             = 'win@wincent.com'
65   s.homepage          = 'http://git.wincent.com/mkdtemp.git'
66   s.rubyforge_project = 'mkdtemp'
67   s.platform          = Gem::Platform::RUBY
68   s.summary           = 'Secure creation of temporary directories'
69   s.description       = <<-ENDDESC
70     mkdtemp is a C extension that wraps the Standard C Library function
71     of the same name to make secure creation of temporary directories
72     easily available from within Ruby.
73   ENDDESC
74   s.require_paths     = ['ext', 'lib']
75   s.has_rdoc          = true
76
77   # TODO: add 'docs' subdirectory, 'README.txt' when they're done
78   s.files             = FileList['{lib,spec}/**/*', 'ext/*.{c,rb}', 'ext/**/*.c'].to_a
79   s.extensions        = ['ext/extconf.rb']
80 end
81
82 task :package => [:clobber, :all, :gem]
83 Rake::GemPackageTask.new(SPEC) do |t|
84   t.need_tar      = true
85 end