Sha256: 4feb86d2d18061ab4256f67d8b654689065b3c40179f0c9cfe26d3574abf33d7

Contents?: true

Size: 1.58 KB

Versions: 2

Compression:

Stored size: 1.58 KB

Contents

#!/usr/bin/env ruby

$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])

help = <<HELP
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>
    
  Options:
HELP

require 'optparse'
require 'jekyll'

options = {}

opts = OptionParser.new do |opts|
  opts.banner = help

  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
    source = '.'
    destination = File.join('.', '_site')
  when 1
    source = '.'
    destination = ARGV[0]
  when 2
    source = ARGV[0]
    destination = ARGV[1]
  else
    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

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
mojombo-jekyll-0.1.4 bin/jekyll
jekyll-0.1.4 bin/jekyll