auto-regen
This commit is contained in:
parent
07a8203e50
commit
f257974b5b
31
bin/jekyll
31
bin/jekyll
|
@ -5,6 +5,8 @@ $:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
||||||
require 'optparse'
|
require 'optparse'
|
||||||
require 'jekyll'
|
require 'jekyll'
|
||||||
|
|
||||||
|
options = {}
|
||||||
|
|
||||||
opts = OptionParser.new do |opts|
|
opts = OptionParser.new do |opts|
|
||||||
opts.banner = DATA.read
|
opts.banner = DATA.read
|
||||||
|
|
||||||
|
@ -20,8 +22,13 @@ def clean(dest)
|
||||||
FileUtils.mkdir_p(dest)
|
FileUtils.mkdir_p(dest)
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
source = nil
|
source = nil
|
||||||
|
@ -42,7 +49,25 @@ case ARGV.size
|
||||||
exit(1)
|
exit(1)
|
||||||
end
|
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__
|
__END__
|
||||||
Jekyll is a blog-aware, static site generator.
|
Jekyll is a blog-aware, static site generator.
|
||||||
|
|
Loading…
Reference in New Issue