require 'rubygems' require 'redcloth' require 'rake' require 'rake/contrib/sshpublisher' desc "Default task" task :default => [ :clean, :build ] desc "Clean generated files" task :clean do Dir['live/**/*'].each { |f| rm_f f } end def compile(file) textile = File.read(file) layout = File.read('src/layout.html') layout.sub('CONTENT', RedCloth.new(textile).to_html).gsub('PAGE', File.basename(file).split('.').first) end desc "Build live HTML files" task :build do Dir['src/*.html'].each do |file| next if %w[downlow.css layout.html].include?(File.basename(file)) file_name = file.split('/').last live_file = "live/#{file_name}" unless uptodate?(live_file, file) && uptodate?(live_file, "src/layout.html") File.new(live_file, 'w').write(compile(file)) puts "created #{live_file}" cp file, 'live/textile/' + file.split('/').last.sub('.html', '.txt') end end src_css = 'src/downlow.css' live_css = 'live/downlow.css' cp src_css, live_css unless uptodate? live_css, src_css src_cv = 'src/current_version.txt' live_cv = 'live/current_version.txt' cp src_cv, live_cv unless uptodate? live_cv, src_cv end desc "Publish the documentation" task :publish => [ :build ] do Rake::SshDirPublisher.new( "defunkt@rubyforge.org", "/var/www/gforge-projects/ozimodo/", "live" ).upload end