From dafeb04f734622e12ae542e31e350c1b3965b7cc Mon Sep 17 00:00:00 2001 From: B Mathis Date: Sat, 31 Oct 2009 12:52:56 -0500 Subject: [PATCH] updated rakefile to use FSSM in `rake watch`, generate a sitemap, and moved typography to a debug folder --- Rakefile | 69 +++++++++++++++++++++++++----- source/{ => debug}/typography.haml | 0 2 files changed, 59 insertions(+), 10 deletions(-) rename source/{ => debug}/typography.haml (100%) diff --git a/Rakefile b/Rakefile index 04881b3..3107637 100644 --- a/Rakefile +++ b/Rakefile @@ -1,15 +1,13 @@ require 'active_support' -# preview project on this port - http://localhost:4000 -port = "4000" - -# compiled site directory -site = "site" - -# for rsync deployment -ssh_user = "user@host.com" -document_root = "~/document_root/" +port = "4000" # preview project port eg. http://localhost:4000 +site = "site" # compiled site directory +source = "source" # source file directory +# MUST CHANGE FOR YOUR PROJECT +site_url = "http://yoursite.com" # deployed site url +ssh_user = "user@host.com" # for rsync deployment +document_root = "~/document_root/" # for rsync deployment def ok_failed(condition) if (condition) @@ -34,12 +32,29 @@ end desc "generate website in output directory" task :generate => :clean do puts "Generating website..." - system "compass" system "jekyll" Dir["#{site}/stylesheets/*.sass"].each { |f| rm_rf(f) } + system "compass" system "mv #{site}/atom.html #{site}/atom.xml" end +def rebuild_site(relative) + puts ">>> Change Detected to: #{relative} <<<" + IO.popen('rake generate'){|io| print(io.readpartial(512)) until io.eof?} + puts '>>> Update Complete <<<' +end + +desc "Watch the site and regenerate when it changes" +task :watch do + require 'fssm' + puts ">>> Watching for Changes <<<" + FSSM.monitor("#{File.dirname(__FILE__)}/#{source}", '**/*') do + update {|base, relative| rebuild_site(relative)} + delete {|base, relative| rebuild_site(relative)} + create {|base, relative| rebuild_site(relative)} + end +end + desc "generate and deploy website" task :deploy => :generate do print "Deploying website..." @@ -68,4 +83,38 @@ end desc "preview the site in a web browser" multitask :preview => [:generate, :start_serve] do system "open http://localhost:#{port}" +end + + +desc "Build an XML sitemap of all html files." +task :sitemap => :generate do + html_files = FileList.new("#{site}/**/*.html").map{|f| f[("#{site}".size)..-1]}.map do |f| + if f.ends_with?("index.html") + f[0..(-("index.html".size + 1))] + else + f + end + end.sort_by{|f| f.size} + open("#{site}/sitemap.xml", 'w') do |sitemap| + sitemap.puts %Q{} + sitemap.puts %Q{} + html_files.each do |f| + priority = case f + when %r{^/$} + 1.0 + when %r{^/blog} + 0.9 + else + 0.8 + end + sitemap.puts %Q{ } + sitemap.puts %Q{ #{site_url}#{f}} + sitemap.puts %Q{ #{Time.to_s('%Y-%m-%d')}} + sitemap.puts %Q{ weekly} + sitemap.puts %Q{ #{priority}} + sitemap.puts %Q{ } + end + sitemap.puts %Q{} + puts "Created #{site}/sitemap.xml" + end end \ No newline at end of file diff --git a/source/typography.haml b/source/debug/typography.haml similarity index 100% rename from source/typography.haml rename to source/debug/typography.haml