bin/jekyll in mojombo-jekyll-0.1.2 vs bin/jekyll in mojombo-jekyll-0.1.3

- old
+ new

@@ -1,27 +1,80 @@ #!/usr/bin/env ruby $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib]) +require 'optparse' require 'jekyll' +options = {} + +opts = OptionParser.new do |opts| + opts.banner = DATA.read + + opts.on("--auto", "Auto-regenerate") do + options[:auto] = true + end +end + +opts.parse! + +def clean(dest) + FileUtils.rm_rf(dest) + FileUtils.mkdir_p(dest) +end + +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 +destination = nil + case ARGV.size when 0 - dest = File.join('.', '_site') - FileUtils.rm_rf(dest) - FileUtils.mkdir_p(dest) - Jekyll.process('.', dest) + source = '.' + destination = File.join('.', '_site') when 1 - Jekyll.process('.', ARGV[0]) + source = '.' + destination = ARGV[0] when 2 - Jekyll.process(ARGV[0], ARGV[1]) + source = ARGV[0] + destination = ARGV[1] else - puts DATA.read + puts "Invalid options. Run `jekyll --help` for assistance." + exit(1) end +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. Basic Command Line Usage: jekyll # . -> ./_site jekyll <path to write generated site> # . -> <path> - jekyll <path to source> <path to write generated site> # <path> -> <path> + jekyll <path to source> <path to write generated site> # <path> -> <path> + + Options: \ No newline at end of file