From f257974b5bcd82af19f84bea056c0af5d691c2ef Mon Sep 17 00:00:00 2001 From: Tom Preston-Werner Date: Sat, 6 Dec 2008 15:48:43 -0800 Subject: [PATCH] auto-regen --- bin/jekyll | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/bin/jekyll b/bin/jekyll index cd4c42bc..0d491192 100755 --- a/bin/jekyll +++ b/bin/jekyll @@ -5,6 +5,8 @@ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib]) require 'optparse' require 'jekyll' +options = {} + opts = OptionParser.new do |opts| opts.banner = DATA.read @@ -20,8 +22,13 @@ def clean(dest) FileUtils.mkdir_p(dest) end -def globs - +def globs(source) + Dir.chdir(source) do + dirs = Dir['*'].select { |x| File.directory?(x) } + dirs -= ['_site'] + dirs = dirs.map { |x| "#{x}/**/*" } + dirs += ['*'] + end end source = nil @@ -42,7 +49,25 @@ case ARGV.size exit(1) end -Jekyll.process(source, destination) +if options[:auto] + puts "Auto-regenerating enabled: #{source} -> #{destination}" + + dw = DirectoryWatcher.new(source) + dw.interval = 1 + dw.glob = globs(source) + + dw.add_observer do |*args| + t = Time.now.strftime("%Y-%m-%d %H:%M:%S") + puts "[#{t}] regeneration: #{args.size} files changed" + Jekyll.process(source, destination) + end + + dw.start + + loop { sleep 1000 } +else + Jekyll.process(source, destination) +end __END__ Jekyll is a blog-aware, static site generator.