root/tags/0.4.1/Rakefile

Revision 974, 4.5 kB (checked in by iv..@gweezlebur.com, 1 year ago)

Add a release task, update router note about default route, 0.4.1 changelog

Line 
1 require 'rake'
2 require 'rake/clean'
3 require 'rake/gempackagetask'
4 require 'rake/rdoctask'
5 require 'rake/testtask'
6 require 'spec/rake/spectask'
7 require 'fileutils'
8 def __DIR__
9   File.dirname(__FILE__)
10 end
11
12 require __DIR__+'/tools/rakehelp'
13 require __DIR__+'/tools/annotation_extract'
14 include FileUtils
15
16 NAME = "merb"
17 VERS = "0.4.1"
18 CLEAN.include ['**/.*.sw?', '*.gem', '.config']
19
20 setup_clean [ "pkg", "lib/*.bundle", "*.gem", "doc/rdoc", ".config", 'coverage', "cache"]
21
22
23 desc "Packages up Merb."
24 task :default => [:package]
25 task :merb => [:clean, :rdoc, :package]
26
27 task :doc => [:rdoc]
28
29
30 Rake::RDocTask.new do |rdoc|
31       files = ['README', 'LICENSE', 'CHANGELOG',
32                'lib/**/*.rb']
33       rdoc.rdoc_files.add(files)
34       rdoc.main = 'README'
35       rdoc.title = 'Merb Docs'
36       rdoc.template = `allison --path`.chomp+'.rb'
37       rdoc.rdoc_dir = 'doc/rdoc'
38       rdoc.options << '--line-numbers' << '--inline-source'
39 end
40
41 spec = Gem::Specification.new do |s|
42   s.name = NAME
43   s.version = VERS
44   s.platform = Gem::Platform::RUBY
45   s.has_rdoc = true
46   s.extra_rdoc_files = ["README", "LICENSE", 'TODO']
47   #s.rdoc_options += RDOC_OPTS +
48   #  ['--exclude', '^(app|uploads)']
49   s.summary = "Merb == Mongrel + Erb. Pocket rocket web framework."
50   s.description = s.summary
51   s.author = "Ezra Zygmuntowicz"
52   s.email = 'ez@engineyard.com'
53   s.homepage = 'http://merb.devjavu.com'
54   s.executables = ['merb']
55
56   s.add_dependency('mongrel')
57   s.add_dependency('erubis')
58   s.add_dependency('mime-types')
59   s.add_dependency('rubigen')
60   s.required_ruby_version = '>= 1.8.4'
61
62   s.files = %w(LICENSE README Rakefile TODO) + Dir.glob("{bin,spec,lib,examples,app_generators,merb_generators,merb_default_generators,rspec_generators,test_unit_generators,script}/**/*")
63      
64   s.require_path = "lib"
65   s.bindir = "bin"
66 end
67
68 Rake::GemPackageTask.new(spec) do |p|
69   #p.need_tar = true
70   p.gem_spec = spec
71 end
72
73 task :install do
74   sh %{rake package}
75   sh %{sudo gem install pkg/#{NAME}-#{VERS} --no-rdoc --no-ri}
76 end
77
78 task :uninstall => [:clean] do
79   sh %{sudo gem uninstall #{NAME}}
80 end
81
82 desc "run webgen"
83 task :doc_webgen do
84   sh %{cd doc/site ; webgen}
85 end
86
87 desc "rdoc to rubyforge"
88 task :doc_rforge do
89   sh %{rake doc}
90   sh %{sudo chmod -R 755 doc}
91   sh %{/usr/bin/scp -r -p doc/rdoc/* ezmobius@rubyforge.org:/var/www/gforge-projects/merb}
92 end
93
94 desc 'Run all specs and then rcov'
95 task :aok do
96   sh %{rake specs;rake rcov}
97 end
98
99 desc "Run all specs"
100 Spec::Rake::SpecTask.new('specs') do |t|
101   t.spec_opts = ["--format", "specdoc", "--colour"]
102   t.spec_files = Dir['spec/**/*_spec.rb'].sort
103 end
104
105 desc "Run a specific spec with TASK=xxxx"
106 Spec::Rake::SpecTask.new('spec') do |t|
107   t.spec_opts = ["--format", "specdoc", "--colour"]
108   t.libs = ['lib', 'server/lib' ]
109   t.spec_files = ["spec/merb/#{ENV['TASK']}_spec.rb"]
110 end
111
112 desc "Run all specs output html"
113 Spec::Rake::SpecTask.new('specs_html') do |t|
114   t.spec_opts = ["--format", "html"]
115   t.libs = ['lib', 'server/lib' ]
116   t.spec_files = Dir['spec/**/*_spec.rb'].sort
117 end
118
119 desc "RCov"
120 Spec::Rake::SpecTask.new('rcov') do |t|
121   t.spec_opts = ["--format", "specdoc", "--colour"]
122   t.spec_files = Dir['spec/**/*_spec.rb'].sort
123   t.libs = ['lib', 'server/lib' ]
124   t.rcov = true
125 end
126
127 STATS_DIRECTORIES = [
128   %w(Code               lib/),
129   %w(Unit\ tests        specs),
130 ].collect { |name, dir| [ name, "./#{dir}" ] }.select { |name, dir| File.directory?(dir) }
131
132 desc "Report code statistics (KLOCs, etc) from the application"
133 task :stats do
134   require __DIR__ + '/tools/code_statistics'
135   #require 'extra/stats'
136   verbose = true
137   CodeStatistics.new(*STATS_DIRECTORIES).to_s
138 end
139
140 task :release => :package do
141   sh %{rubyforge add_release merb merb #{VERSION} pkg/#{NAME}-#{VERSION}.gem}
142 end
143
144 ##############################################################################
145 # SVN
146 ##############################################################################
147
148 desc "Add new files to subversion"
149 task :svn_add do
150    system "svn status | grep '^\?' | sed -e 's/? *//' | sed -e 's/ /\ /g' | xargs svn add"
151 end
152
153
154 # Run specific tests or test files
155 #
156 # Based on a technique popularized by Geoffrey Grosenbach
157 rule "" do |t|
158   spec_cmd = (RUBY_PLATFORM =~ /java/) ? 'jruby -S spec' : 'spec'
159   # spec:spec_file:spec_name
160   if /spec:(.*)$/.match(t.name)
161     arguments = t.name.split(":")
162     file_name = arguments[1]
163     spec_name = arguments[2..-1]
164
165     if File.exist?("spec/merb/#{file_name}_spec.rb")
166       run_file_name = "spec/merb/#{file_name}_spec.rb"
167     end
168    
169     example = !spec_name.empty? ? " -e '#{spec_name}'" : ""
170
171     sh "#{spec_cmd} #{run_file_name} --format specdoc --colour #{example}"
172   end
173 end
Note: See TracBrowser for help on using the browser.