# Rakefile for Bacon. -*-ruby-*-
require 'rake/rdoctask'
require 'rake/testtask'
desc "Run all the tests"
task :default => [:test]
desc "Do predistribution stuff"
task :predist => [:chmod, :changelog, :rdoc]
desc "Make an archive as .tar.gz"
task :dist => :test do
sh "export DARCS_REPO=#{File.expand_path "."}; " +
"darcs dist -d bacon-#{get_darcs_tree_version}"
end
# Helper to retrieve the "revision number" of the darcs tree.
def get_darcs_tree_version
unless File.directory? "_darcs"
$: << "lib"
require 'bacon'
return Bacon::VERSION
end
changes = `darcs changes`
count = 0
tag = "0.0"
changes.each("\n\n") { |change|
head, title, desc = change.split("\n", 3)
if title =~ /^ \*/
# Normal change.
count += 1
elsif title =~ /tagged (.*)/
# Tag. We look for these.
tag = $1
break
else
warn "Unparsable change: #{change}"
end
}
tag + "." + count.to_s
end
def manifest
`darcs query manifest 2>/dev/null`.split("\n").map { |f| f.gsub(/\A\.\//, '') }
end
desc "Make binaries executable"
task :chmod do
Dir["bin/*"].each { |binary| File.chmod(0775, binary) }
end
desc "Generate a ChangeLog"
task :changelog do
sh "darcs changes --repo=#{ENV["DARCS_REPO"] || "."} >ChangeLog"
end
desc "Generate RDox"
task "RDOX" do
sh "bin/bacon -Ilib --automatic --specdox >RDOX"
end
desc "Run all the fast tests"
task :test do
ruby "bin/bacon -Ilib --automatic --quiet"
end
begin
$" << "sources" if defined? FromSrc
require 'rubygems'
require 'rake'
require 'rake/clean'
require 'rake/packagetask'
require 'rake/gempackagetask'
require 'fileutils'
rescue LoadError
# Too bad.
else
spec = Gem::Specification.new do |s|
s.name = "bacon"
s.version = get_darcs_tree_version
s.platform = Gem::Platform::RUBY
s.summary = "a small RSpec clone"
s.description = <<-EOF
Bacon is a small RSpec clone weighing less than 350 LoC but
nevertheless providing all essential features.
http://chneukirchen.org/repos/bacon
EOF
s.files = manifest + %w(RDOX)
s.bindir = 'bin'
s.executables << 'bacon'
s.require_path = 'lib'
s.has_rdoc = true
s.extra_rdoc_files = ['README', 'RDOX']
s.test_files = []
s.author = 'Christian Neukirchen'
s.email = 'chneukirchen@gmail.com'
s.homepage = 'http://chneukirchen.org/repos/bacon'
end
Rake::GemPackageTask.new(spec) do |p|
p.gem_spec = spec
p.need_tar = false
p.need_zip = false
end
end
desc "Generate RDoc documentation"
Rake::RDocTask.new(:rdoc) do |rdoc|
rdoc.options << '--line-numbers' << '--inline-source' <<
'--main' << 'README' <<
'--title' << 'Bacon Documentation' <<
'--charset' << 'utf-8'
rdoc.rdoc_dir = "doc"
rdoc.rdoc_files.include 'README'
rdoc.rdoc_files.include 'COPYING'
rdoc.rdoc_files.include 'RDOX'
rdoc.rdoc_files.include('lib/bacon.rb')
end
task :rdoc => ["RDOX"]