]> git.wincent.com - mkdtemp.git/blobdiff - Rakefile
Make 'push' task depend on built gem
[mkdtemp.git] / Rakefile
index 100d399a5c7bafa1f72f91ad601efd761ada5423..48eb62dc22ff5158b0d1af2188980505012227a5 100644 (file)
--- a/Rakefile
+++ b/Rakefile
@@ -1,30 +1,41 @@
-# Copyright 2007-2008 Wincent Colaiuta
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# Copyright 2007-2010 Wincent Colaiuta. All rights reserved.
 #
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
 #
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# 1. Redistributions of source code must retain the above copyright notice,
+#    this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+#    this list of conditions and the following disclaimer in the documentation
+#    and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
 
 require 'rake'
+require 'rake/clean'
 require 'rake/gempackagetask'
+require 'rake/rdoctask'
 require 'rubygems'
 require 'spec/rake/spectask'
 require 'spec/rake/verify_rcov'
+require File.expand_path('lib/mkdtemp/version.rb', File.dirname(__FILE__))
 
-desc 'Prepare release'
-task :release => [:changelog, :gem]
+CLEAN.include   Rake::FileList['**/*.so', '**/*.bundle', '**/*.o', '**/mkmf.log', '**/Makefile']
 
-desc 'Update changelog'
-task :changelog do |t|
-  system %{svn log svn://svn.wincent.com/Walrus/trunk > CHANGELOG.txt}
-end
+task :default => :all
+
+desc 'Build all and run all specs'
+task :all => [:make, :spec]
 
 desc 'Run specs with coverage'
 Spec::Rake::SpecTask.new('coverage') do |t|
@@ -51,46 +62,32 @@ Spec::Rake::SpecTask.new('specdoc') do |t|
   t.out         = 'specdoc.rd'
 end
 
-desc 'Build C extensions'
-task :make => [:jindex, :mkdtemp]
-
-desc 'Build jindex extension'
-task :jindex do |t|
-  system %{cd ext/jindex && ruby ./extconf.rb && make && cp jindex.#{Config::CONFIG['DLEXT']} ../ && cd -}
+desc 'Build extension'
+task :make do |t|
+  Dir.chdir 'ext' do
+    ruby './extconf.rb'
+    system 'make'
+  end
 end
 
-desc 'Build mkdtemp extension'
-task :mkdtemp do |t|
-  system %{cd ext/mkdtemp && ruby ./extconf.rb && make && cp mkdtemp.#{Config::CONFIG['DLEXT']} ../ && cd -}
+Rake::RDocTask.new do |t|
+  t.rdoc_files.include 'doc/README', 'ext/mkdtemp.c'
+  t.options           << '--charset' << 'UTF-8' << '--inline-source'
+  t.main              = 'doc/README'
+  t.title             = 'mkdtemp documentation'
 end
 
-SPEC = Gem::Specification.new do |s|
-  s.name              = 'walrus'
-  s.version           = '0.2'
-  s.author            = 'Wincent Colaiuta'
-  s.email             = 'win@wincent.com'
-  s.homepage          = 'http://walrus.wincent.com/'
-  s.rubyforge_project = 'walrus'
-  s.platform          = Gem::Platform::RUBY
-  s.summary           = 'Object-oriented templating system'
-  s.description       = <<-ENDDESC
-    Walrus is an object-oriented templating system inspired by and similar
-    to the Cheetah Python-powered template engine. It includes a Parser
-    Expression Grammar (PEG) parser generator capable of generating an
-    integrated lexer, "packrat" parser, and Abstract Syntax Tree (AST)
-    builder.
-  ENDDESC
-  s.require_paths     = ['lib', 'ext']
-  s.has_rdoc          = true
-
-  # TODO: add 'docs' subdirectory, 'README.txt' when they're done
-  s.files             = FileList['{bin,lib,spec}/**/*', 'ext/**/*.rb', 'ext/**/*.c'].to_a
-  s.extensions        = ['ext/jindex/extconf.rb', 'ext/mkdtemp/extconf.rb']
-  s.executables       = ['walrus']
-  s.add_dependency('wopen3', '>= 0.1') 
+desc 'Upload RDoc to RubyForge website'
+task :upload_rdoc => :rdoc do
+  sh 'scp -r html/* rubyforge.org:/var/www/gforge-projects/mkdtemp/'
 end
 
-Rake::GemPackageTask.new(SPEC) do |t|
-  t.need_tar      = true
+desc 'Build gem ("gem build")'
+task :build => :make do
+  system 'gem build mkdtemp.gemspec'
 end
 
+desc 'Publish gem ("gem push")'
+task :push => "mkdtemp-#{Dir::Mkdtemp::VERSION}.gem" do
+  system "gem push mkdtemp-#{Dir::Mkdtemp::VERSION}.gem"
+end