Handle destinations outside of source.

This commit is contained in:
Dmitry Chestnykh 2013-09-30 05:55:38 +02:00
parent dfaf1f45cc
commit 58cab6b050
1 changed files with 11 additions and 4 deletions

View File

@ -34,13 +34,20 @@ module Jekyll
require 'listen' require 'listen'
source = options['source'] source = options['source']
destination = Pathname.new(options['destination']) destination = options['destination']
.relative_path_from(Pathname.new(source))
.to_path begin
ignored = Regexp.new(Regexp.escape(Pathname.new(destination)
.relative_path_from(Pathname.new(source))
.to_path))
rescue ArgumentError
# Destination is outside the source, no need to ignore it.
ignored = nil
end
Jekyll.logger.info "Auto-regeneration:", "enabled" Jekyll.logger.info "Auto-regeneration:", "enabled"
Listen.to(source, :ignore => %r{#{Regexp.escape(destination)}}) do |modified, added, removed| Listen.to(source, :ignore => ignored) do |modified, added, removed|
t = Time.now.strftime("%Y-%m-%d %H:%M:%S") t = Time.now.strftime("%Y-%m-%d %H:%M:%S")
n = modified.length + added.length + removed.length n = modified.length + added.length + removed.length
print Jekyll.logger.formatted_topic("Regenerating:") + "#{n} files at #{t} " print Jekyll.logger.formatted_topic("Regenerating:") + "#{n} files at #{t} "