#!/usr/bin/env ruby rake # Rakefile for Calibre require 'rake/rdoctask' desc "Run all the tests" task :default => [:test] # tests desc "Run all tests" task :test => [:"test-facets", :"test-carats"] desc "Run tests for Ruby Facets" Rake::TestTask.new(:"test-facets") do |t| t.libs << "packages/facets/lib" t.test_files = FileList['packages/facets/test/**/tc*.rb'] t.verbose = true end desc "Run tests for Ruby Carats" Rake::TestTask.new(:"test-carats") do |t| t.libs << "packages/carats/lib" t.test_files = FileList['packages/carats/test/**/tc*.rb'] t.verbose = true end # rdocs desc "Generate All RDoc documentation" task :rdoc => [:"rdoc-facets", :"rdoc-carats"] desc "Generate RDoc documentation for Facets" Rake::RDocTask.new(:"rdoc-facets") do |rd| cdir = Dir.pwd Dir.chdir 'packages/facets' rd.main = 'README' rd.template = 'html' rd.rdoc_dir = 'pub/facet/doc' rd.rdoc_files.include('README', 'LIC*', 'lib/facet/') rd.rdoc_files.exclude 'InstalledFiles' rd.options << '--promiscuous --merge --all' Dir.chdir(cdir) end desc "Generate RDoc documentation for Carats" Rake::RDocTask.new(:"carat-doc") do |rd| cdir = Dir.pwd Dir.chdir 'packages/carats' rd.main = 'README' rd.template = 'html' rd.rdoc_dir = 'doc' rd.rdoc_files.include('README', 'LIC*', 'lib/carat/') rd.rdoc_files.exclude 'InstalledFiles' rd.options << '--promiscuous --merge --all' Dir.chdir(cdir) end # web publish desc "Publish Rubyforge Website" task :webpub do rubyforge_project = 'calibre' username = 'transami' web_dir = 'pub/www' # do it current_dir = Dir.pwd Dir.chdir( web_dir ) web_files = FileList.new web_files.include('**/*') web_files = '"' << web_files.join('" "') << '"' cmd = "scp #{web_files} #{username}@rubyforge.org:/var/www/gforge-projects/#{rubyforge_project}/" system cmd Dir.chdir( current_dir ) end #desc "Do predistribution stuff" #task :predist => [:changelog, :doc] desc "Make an archive as .tar.gz" task :dist => :test do system "export DARCS_REPO=#{File.expand_path "."}; " + "darcs dist -d rand#{get_darcs_tree_version}" end desc "Generate a ChangeLog" task :changelog do system "darcs changes --repo=#{ENV["DARCS_REPO"] || "."} >ChangeLog" end # --- Helper Methods --- # Helper to retrieve the "revision number" of the darcs tree. def get_darcs_tree_version return "" unless File.directory? "_darcs" 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