# Rantfile for Rant :) import "md5" import %w(rubytest rubydoc rubypackage autoclean win32/rubycmdwrapper sys/more) task :default => :test dist_files = sys["{bin,lib,test,doc,misc}/**/*"] dist_files.shun("html", "coverage") dist_files += sys["*"].no_dir.exclude("InstalledFiles", "Session.vim") dist_files.exclude("bench-*") hp_files = sys["doc/homepage/*"] extra_rdoc_files = sys["**/README", "NEWS", "doc/**/*.rdoc"] extra_rdoc_files.no_dir("pkg").no_dir("test") # remove when compiler stuff is getting useful... dist_files.exclude "lib/rant/compiler*", "lib/rant/import/c/program.rb" rdoc_opts = %w(-S -c UTF-8 --title Rant --main README) gen RubyPackage, "rant#{var :pkg_ext}" do |t| t.version = `#{Env::RUBY} run_rant --version`.split[1] t.summary = "Rant is a Ruby based build tool." t.files = dist_files t.bindir = "bin" t.executable %w(rant rant-import) t.author = "Stefan Lang" t.email = "langstefan@gmx.at" t.rubyforge_project = "make" t.homepage = "http://make.rubyforge.org" t.gem_extra_rdoc_files = extra_rdoc_files t.gem_rdoc_options = rdoc_opts desc "Create packages for distribution." t.package_task end desc "Generate documentation." gen RubyDoc do |g| g.verbose = true g.dir = "doc/html" g.files.concat extra_rdoc_files g.opts = rdoc_opts + %w(-T doc/jamis.rb) end html_index = "doc/html/index.html" api_index = html_index.sub("index", "api") enhance "doc/html/index.html" do sys.rm_f api_index # remove old RDoc index page make "hp2doc" end task "hp2doc" do if test(?f, html_index) && !test(?f, api_index) sys.mv html_index, api_index end sys.cp hp_files, "doc/html" end desc "Publish html docs on make.rubyfore.org.", "Note: scp will prompt for rubyforge password." task "publish-docs" => :doc do sys "scp -r doc/html/* langi@rubyforge.org:/var/www/gforge-projects/make/" end task "publish-hp" do sys "scp -r doc/homepage/* langi@rubyforge.org:/var/www/gforge-projects/make/" end desc "Run basic tests." gen RubyTest do |g| g.libs << "test" g.pattern = 'test_*.rb' end desc "Run first test-project." gen RubyTest, :testp1 do |g| g.libs << "test" g.test_files = ["test/project1/test_project.rb"] end desc "Run second test project." gen RubyTest, :testp2 do |g| g.libs << "test" g.test_files = ["test/project2/test_project.rb"] end desc "Test small Ruby project." gen RubyTest, :testrb1 do |g| g.libs << "test" g.test_files = %w(test/project_rb1/test_project_rb1.rb) end desc "Test plugins." gen RubyTest, :testplugins do |g| g.libs << "test" g.test_files = sys["test/plugin/**/test_*"] end desc "Run all tests and generate coverage with rcov." task :cov do lp = File.expand_path "lib" sys.cd "test" do sys %W(rcov -xtutil.rb,ts_*,tc_*,test_* -I#{lp} ts_all.rb) end end desc "Test project with subdirs." gen RubyTest, :tsubdirs do |t| t.libs << "test" t.test_files = sys["test/subdirs/test_*.rb"] end desc "Test rant-import command." gen RubyTest, :trimport do |t| t.libs << "test" t.test_files = sys["test/rant-import/test_*.rb"] end desc "Test import/ libraries." gen RubyTest, :timport do |t| t.libs << "test" t.test_files = sys["test/import/**/test_*.rb"] end desc "Test C support." gen RubyTest, :tc do |t| t.libs << "test" t.test_files = sys["test/c/test_*.rb", "test/import/c/**/test_*.rb"] end desc "Run all tests." gen RubyTest, :tall do |g| g.libs << "test" g.test_files = sys["test/**/test_*.rb"] end task :t180 do |t| # my installed testrb version doesn't work with ruby-1.8.0 sys.cd "test" sys "ruby180 ts_all.rb" end desc "Remove autogenerated files." gen AutoClean, :clean var[:clean].include %w( InstalledFiles .config bench-rant bench-depsearch test/coverage ) # Just for quick visual testing of rant... task :please_fail do |t| sys "mix_nix_gibts" end task "to-win" => :package do win_dir = "/mnt/data_fat/stefan/Ruby" Dir["pkg/*"].each { |f| target = File.join(win_dir, File.basename(f)) make target => f do |t| sys.rm_rf target if test(?e, target) sys.cp_r f, t.name end } end desc "Install Rant." task :install do sys.ruby "setup.rb" # try to install man page man_path = ENV["MANPATH"] if man_path puts "trying to install rant(1) manpage..." require 'rbconfig' prefix = Config::CONFIG["prefix"] dirs = sys.split_path man_path man_dir = dirs.find{|d| d == "#{prefix}/man" } || dirs.first sys.install "doc/rant.1", "#{man_dir}/man1", :mode => 0644 if man_dir end end if Env.on_windows? enhance :install => (gen Win32::RubyCmdWrapper, sys["bin/*"]) end task "svn-clean" do `svn stat`.split(/\n/).each { |line| sys.clean line[7..-1] if line[0] == ?? } end # vim:ft=ruby