lib/jekyll/watcher.rb in jekyll-watch-1.5.1 vs lib/jekyll/watcher.rb in jekyll-watch-2.0.0

- old
+ new

@@ -38,48 +38,50 @@ end rescue ThreadError # You pressed Ctrl-C, oh my! end - # TODO: shouldn't be public API + private def build_listener(site, options) Listen.to( options["source"], :ignore => listen_ignore_paths(options), :force_polling => options["force_polling"], &listen_handler(site) ) end + private def listen_handler(site) proc do |modified, added, removed| t = Time.now c = modified + added + removed n = c.length - print Jekyll.logger.message("Regenerating:", - "#{n} file(s) changed at #{t.strftime("%Y-%m-%d %H:%M:%S")} ") - begin - site.process - puts "...done in #{Time.now - t} seconds." - rescue => e - puts "...error:" - Jekyll.logger.warn "Error:", e.message - Jekyll.logger.warn "Error:", "Run jekyll build --trace for more information." + Jekyll.logger.info "Regenerating:", + "#{n} file(s) changed at #{t.strftime("%Y-%m-%d %H:%M:%S")}" + + c.map { |path| path.sub("#{site.source}/", "") }.each do |file| + Jekyll.logger.info "", file end + + process(site, t) end end + private def custom_excludes(options) Array(options["exclude"]).map { |e| Jekyll.sanitized_path(options["source"], e) } end + private def config_files(options) %w(yml yaml toml).map do |ext| Jekyll.sanitized_path(options["source"], "_config.#{ext}") end end + private def to_exclude(options) [ config_files(options), options["destination"], custom_excludes(options), @@ -89,10 +91,11 @@ # Paths to ignore for the watch option # # options - A Hash of options passed to the command # # Returns a list of relative paths from source that should be ignored + private def listen_ignore_paths(options) source = Pathname.new(options["source"]).expand_path paths = to_exclude(options) paths.map do |p| @@ -109,10 +112,23 @@ # Could not find a relative path end end.compact + [%r!\.jekyll\-metadata!] end + private def sleep_forever loop { sleep 1000 } + end + + private + def process(site, time) + begin + site.process + Jekyll.logger.info "", "...done in #{Time.now - time} seconds." + rescue => e + Jekyll.logger.warn "Error:", e.message + Jekyll.logger.warn "Error:", "Run jekyll build --trace for more information." + end + puts "" end end end