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