diff options
author | B Mathis <brandon@imathis.com> | 2009-10-31 12:52:56 -0500 |
---|---|---|
committer | B Mathis <brandon@imathis.com> | 2009-10-31 12:52:56 -0500 |
commit | dafeb04f734622e12ae542e31e350c1b3965b7cc (patch) | |
tree | a2af4fbe7fc0a4a9c24f90aa5bc4a00dc775c060 /Rakefile | |
parent | 5c736f5eb03d7b51defe27ac027124557c4c7a3b (diff) | |
download | my_new_personal_website-dafeb04f734622e12ae542e31e350c1b3965b7cc.tar.xz my_new_personal_website-dafeb04f734622e12ae542e31e350c1b3965b7cc.zip |
updated rakefile to use FSSM in `rake watch`, generate a sitemap, and moved typography to a debug folder
Diffstat (limited to 'Rakefile')
-rw-r--r-- | Rakefile | 69 |
1 files changed, 59 insertions, 10 deletions
@@ -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{<?xml version="1.0" encoding="UTF-8"?>} + sitemap.puts %Q{<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">} + html_files.each do |f| + priority = case f + when %r{^/$} + 1.0 + when %r{^/blog} + 0.9 + else + 0.8 + end + sitemap.puts %Q{ <url>} + sitemap.puts %Q{ <loc>#{site_url}#{f}</loc>} + sitemap.puts %Q{ <lastmod>#{Time.to_s('%Y-%m-%d')}</lastmod>} + sitemap.puts %Q{ <changefreq>weekly</changefreq>} + sitemap.puts %Q{ <priority>#{priority}</priority>} + sitemap.puts %Q{ </url>} + end + sitemap.puts %Q{</urlset>} + puts "Created #{site}/sitemap.xml" + end end
\ No newline at end of file |