]> git.wincent.com - wikitext.git/blob - Rakefile
Auto-initialize under Rails 3
[wikitext.git] / Rakefile
1 # Copyright 2007-2010 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/rdoctask'
18 require 'rubygems'
19 require File.join(File.dirname(__FILE__), 'lib', 'wikitext', 'version.rb')
20
21 CLEAN.include   Rake::FileList['**/*.so', '**/*.bundle', '**/*.o', '**/mkmf.log', '**/Makefile']
22 CLOBBER.include Rake::FileList['ext/wikitext_ragel.c']
23
24 task :default => :all
25
26 desc 'Build all and run all specs'
27 task :all => [:make, :spec]
28
29 extension_makefile  = 'ext/Makefile'
30 ragel               = 'ext/wikitext_ragel.c'
31 built_extension     = "ext/wikitext.#{Config::CONFIG['DLEXT']}" # wikitext.bundle (Darwin), wikitext.so (Linux)
32 extension_files     = FileList[
33   'ext/Makefile',
34   'ext/ary.c',
35   'ext/ary.h',
36   'ext/parser.c',
37   'ext/parser.h',
38   'ext/ruby_compat.h',
39   'ext/str.c',
40   'ext/str.h',
41   'ext/token.c',
42   'ext/token.h',
43   'ext/wikitext.c',
44   'ext/wikitext.h',
45   'ext/wikitext_ragel.c',
46   'ext/wikitext_ragel.h'
47 ]
48
49 desc 'Build C extension'
50 task :make => [ragel, extension_makefile, built_extension]
51
52 file ragel => ['ext/wikitext_ragel.rl'] do
53   Dir.chdir('ext') do
54     # pass the -s switch here because otherwise Ragel is totally silent
55     # I like to have visual confirmation that it's actually run
56     sh 'ragel -G2 -s wikitext_ragel.rl'
57   end
58 end
59
60 file extension_makefile => ['ext/extconf.rb', 'ext/depend', ragel] do
61   Dir.chdir('ext') do
62     ruby 'extconf.rb'
63   end
64 end
65
66 file built_extension => extension_files do
67   Dir.chdir('ext') do
68     sh 'make && touch .built'
69   end
70 end
71
72 desc 'Run specs'
73 task :spec => :make do
74   sh 'spec spec'
75 end
76
77 Rake::RDocTask.new do |t|
78   t.rdoc_files.include 'doc/README', 'doc/RELEASE-NOTES', 'doc/rdoc.rb'
79   t.options           << '--charset' << 'UTF-8' << '--inline-source'
80   t.main              = 'doc/README'
81   t.title             = 'Wikitext documentation'
82 end
83
84 desc 'Upload RDoc to RubyForge website'
85 task :upload_rdoc => :rdoc do
86   sh 'scp -r html/* rubyforge.org:/var/www/gforge-projects/wikitext/'
87 end
88
89 desc 'Build gem ("gem build")'
90 task :build => :make do
91   system 'gem build wikitext.gemspec'
92 end
93
94 desc 'Push gem to Gemcutter ("gem push")'
95 task :push => :build do
96   system "gem push wikitext-#{Wikitext::VERSION}.gem"
97 end