root/tags/0.4.0/Rakefile

Revision 854, 4.6 kB (checked in by has.s..@gmail.com, 1 year ago)

Added a model generator to the merb_default scope

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