Ensure request is sent even if ebb_client_body_write isn't called
[ebb.git] / Rakefile
blob571b11e8fd2e7ec68aaaf8f728380ac85ee4c0da
1 require 'rake'
2 require 'rake/testtask'
3 require 'rake/gempackagetask'
4 require 'rake/clean'
6 def dir(path)
7   File.expand_path File.join(File.dirname(__FILE__), path)
8 end
10 require dir('ruby_lib/ebb')
12 COMMON_DISTFILES = FileList.new('src/ebb.{c,h}', 'src/parser.{c,h}', 
13   'libev/*', 'README')
15 RUBY_DISTFILES = COMMON_DISTFILES + FileList.new('src/ebb_ruby.c', 
16   'src/extconf.rb', 'ruby_lib/**/*', 'benchmark/*.rb', 'bin/ebb_rails', 
17   'test/*.rb')
19 PYTHON_DISTFILES = COMMON_DISTFILES + FileList.new('setup.py', 
20   'src/ebb_python.c')
22 CLEAN.add ["**/*.{o,bundle,so,obj,pdb,lib,def,exp}", "benchmark/*.dump", 
23   'site/index.html', 'MANIFEST']
25 CLOBBER.add ['src/Makefile', 'src/parser.c', 'src/mkmf.log', 'build']
27 Rake::TestTask.new do |t|
28   t.test_files = FileList.new("test/*.rb")
29   t.verbose = true
30 end
32 task(:default => [:compile, :test])
34 task(:compile => ['src/Makefile', 'src/ebb.c', 'src/ebb.h', 'src/ebb_ruby.c', 'src/parser.c', 'src/parser.h']) do
35   sh "cd #{dir('src')} && make"
36 end
38 file('src/Makefile' => 'src/extconf.rb') do
39     sh "cd #{dir('src')} && ruby extconf.rb"
40 end
42 task(:package => 'src/parser.c')
43 file('src/parser.c' => 'src/parser.rl') do
44   sh 'ragel -s -G2 src/parser.rl'
45 end
47 file('MANIFEST') do
48   File.open(dir('MANIFEST'), "w+") do |manifest|
49     PYTHON_DISTFILES.each { |file| manifest.puts(file) }
50   end
51 end
53 task(:wc) { sh "wc -l ruby_lib/*.rb src/ebb*.{c,h}" }
55 task(:test => RUBY_DISTFILES)
56 Rake::TestTask.new do |t|
57   t.test_files = 'test/basic_test.rb'
58   t.verbose = true
59 end
61 task(:site_upload => :site) do
62   sh 'scp -r site/* rydahl@rubyforge.org:/var/www/gforge-projects/ebb/'
63 end
64 task(:site => 'site/index.html')
65 file('site/index.html' => %w{README site/style.css}) do
66   require 'BlueCloth'
67   doc = BlueCloth.new(File.read(dir('README')))
68   template = <<-HEREDOC
69 <html>
70   <head>
71     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
72     <title>Ebb</title>
73     <link rel="alternate" href="http://max.kanat.us/tag-syndicate/?user=four&tag=ebb" title="RSS Feed" type="application/rss+xml" />
74     <link type="text/css" rel="stylesheet" href="style.css" media="screen"/>
75   </head>
76   <body>  
77     <div id="content">CONTENT</div>
78   </body>
79 </html>
80 HEREDOC
81   
82   File.open(dir('site/index.html'), "w+") do |f|
83     f.write template.sub('CONTENT', doc.to_html)
84   end
85 end
87 spec = Gem::Specification.new do |s|
88   s.platform = Gem::Platform::RUBY
89   s.summary = "A Web Server"
90   s.description = ''
91   s.name = 'ebb'
92   s.author = 'ry dahl'
93   s.email = 'ry at tiny clouds dot org'
94   s.homepage = 'http://ebb.rubyforge.org'
95   s.version = Ebb::VERSION
96   s.rubyforge_project = 'ebb'
97   
98   s.add_dependency('rack')
99   s.required_ruby_version = '>= 1.8.4'
100   
101   s.require_path = 'ruby_lib'
102   s.extensions = 'src/extconf.rb'
103   s.bindir = 'bin'
104   s.executables = %w(ebb_rails)
105   
106   s.files = RUBY_DISTFILES
109 Rake::GemPackageTask.new(spec) do |pkg|
110   pkg.need_zip = true