diff options
-rw-r--r-- | Rakefile | 69 | ||||
-rw-r--r-- | source/debug/typography.haml (renamed from source/typography.haml) | 0 |
2 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 diff --git a/source/typography.haml b/source/debug/typography.haml index f7e7b17b..f7e7b17b 100644 --- a/source/typography.haml +++ b/source/debug/typography.haml |