Updated mould names in the binary help
[jello.git] / Rakefile.rb
blob5254d99d8ee20858da25230181c951a8fd208a3a
1 ($:.unshift File.expand_path(File.join( File.dirname(__FILE__), 'lib' ))).uniq!
2 require 'jello'
4 require 'fileutils'
6 # =======================
7 # = Gem packaging tasks =
8 # =======================
9 begin
10   require 'echoe'
11   
12   task :package => :'package:install'
13   task :manifest => :'package:manifest'
14   namespace :package do
15     Echoe.new('jello', Jello::Version) do |g|
16       g.project = 'jello'
17       g.author = ['elliottcable']
18       g.email = ['Jello@elliottcable.com']
19       g.summary = 'A library to watch the OS X pasteboard, and process/modify incoming pastes.'
20       g.url = 'http://github.com/elliottcable/jello'
21       g.development_dependencies = ['echoe >=3.0.1', 'rspec', 'rcov', 'yard', 'stringray']
22       g.manifest_name = '.manifest'
23       g.ignore_pattern = /^\.git\/|^meta\/|\.gemspec/
24     end
25   
26     desc 'tests packaged files to ensure they are all present'
27     task :verify => :package do
28       # An error message will be displayed if files are missing
29       if system %(ruby -e "require 'rubygems'; require 'pkg/jello-#{Jello::Version}/lib/jello'")
30         puts "\nThe library files are present"
31       end
32     end
34     task :copy_gemspec => [:package] do
35       pkg = Dir['pkg/*'].select {|dir| File.directory? dir}.last
36       mv File.join(pkg, pkg.gsub(/^pkg\//,'').gsub(/\-\d+$/,'.gemspec')), './'
37     end
39     desc 'builds a gemspec as GitHub wants it'
40     task :gemspec => [:package, :copy_gemspec, :clobber_package]
41   end
42   
43 rescue LoadError
44   desc 'You need the `echoe` gem to package Jello'
45   task :package
46 end
48 # =======================
49 # = Spec/Coverage tasks =
50 # =======================
51 begin
52   require 'spec'
53   require 'rcov'
54   require 'spec/rake/spectask'
55   
56   task :default => :'coverage:run'
57   task :coverage => :'coverage:run'
58   namespace :coverage do
59     Spec::Rake::SpecTask.new(:run) do |t|
60       t.spec_opts = ["--format", "specdoc"]
61       t.spec_opts << "--colour" unless ENV['CI']
62       t.spec_files = Dir['spec/**/*_spec.rb'].sort
63       t.libs = ['lib']
64       t.rcov = true
65       t.rcov_opts = [ '--include-file', '"^lib"', '--exclude-only', '".*"']
66       t.rcov_dir = File.join('meta', 'coverage')
67     end
68     
69     begin
70       require 'spec/rake/verify_rcov'
71       # For the moment, this is the only way I know of to fix RCov. I may
72       # release the fix as it's own gem at some point in the near future.
73       require 'stringray/core_ext/spec/rake/verify_rcov'
74       RCov::VerifyTask.new(:verify) do |t|
75         t.threshold = 65.0
76         t.index_html = File.join('meta', 'coverage', 'index.html')
77         t.require_exact_threshold = false
78       end
79     rescue LoadError
80       desc 'You need the `stringray` gem to verify coverage'
81       task :verify
82     end
83     
84     task :open do
85       system 'open ' + File.join('meta', 'coverage', 'index.html') if PLATFORM['darwin']
86     end
87   end
88   
89 rescue LoadError
90   desc 'You need the `rcov` and `rspec` gems to run specs/coverage'
91   task :coverage
92 end
94 # =======================
95 # = Documentation tasks =
96 # =======================
97 begin
98   require 'yard'
99   require 'yard/rake/yardoc_task'
100   
101   task :documentation => :'documentation:generate'
102   namespace :documentation do
103     YARD::Rake::YardocTask.new :generate do |t|
104       t.files   = ['lib/**/*.rb']
105       t.options = ['--output-dir', File.join('meta', 'documentation'),
106                    '--readme', 'README.markdown']
107     end
108     
109     YARD::Rake::YardocTask.new :dotyardoc do |t|
110       t.files   = ['lib/**/*.rb']
111       t.options = ['--no-output',
112                    '--readme', 'README.markdown']
113     end
114     
115     task :open do
116       system 'open ' + File.join('meta', 'documentation', 'index.html') if PLATFORM['darwin']
117     end
118   end
119   
120 rescue LoadError
121   desc 'You need the `yard` gem to generate documentation'
122   task :documentation
125 # =========
126 # = Other =
127 # =========
128 desc 'Removes all meta producs'
129 task :clobber do
130   `rm -rf #{File.expand_path(File.join( File.dirname(__FILE__), 'meta' ))}`
133 desc 'Check everything over before commiting'
134 task :aok => [:'documentation:generate', :'documentation:open',
135               :'package:manifest', :'package:gemspec',
136               :'coverage:run', :'coverage:verify', :'coverage:open']
138 task :ci => [:'documentation:generate', :'coverage:run', :'coverage:verify']