module Jekyll::Watcher

Public Instance Methods

listen_handler(site) click to toggle source
# File lib/patches/jekyll_watcher.rb, line 30
def listen_handler(site)
  proc do |modified, added, removed|
    t = Time.now
    c = modified + added + removed
    n = c.length
    Jekyll.logger.info("Regenerating:",
      "#{n} file(s) changed at #{t.strftime("%Y-%m-%d %H:%M:%S")} ")
    relative_paths = c.map { |p| site.in_source_dir(p) }
    relative_paths.each { |file| Jekyll.logger.info "", file.cyan }
    process site, t
  end
end
watch(options, site = nil) click to toggle source

Returns nothing.

# File lib/patches/jekyll_watcher.rb, line 8
def watch(options, site = nil)
  ENV["LISTEN_GEM_DEBUGGING"] ||= "1" if options["verbose"]

  site ||= Jekyll::Site.new(options)
  listener = build_listener(site, options)
  listener.start

  Jekyll.logger.info "Auto-regeneration:", "#{"enabled".green} for #{options["source"]}"

  unless options["serving"]
    trap("INT") do
      listener.stop
      puts "     Halting auto-regeneration."
      exit 0
    end

    sleep_forever
  end
rescue ThreadError
  # You pressed Ctrl-C, oh my!
end

Private Instance Methods

print_clear_line() click to toggle source
process(site, time) click to toggle source
# File lib/patches/jekyll_watcher.rb, line 45
def process(site, time)
  site.process
  Jekyll.logger.info "", "...done in #{Time.now - time} seconds.".green
  print_clear_line
rescue => e
  Jekyll.logger.warn "Error:", e.message
  Jekyll.logger.warn "Error:", "Run jekyll build --trace for more information."
  print_clear_line
end