jekyll-watch-2.2.1/0000755000004100000410000000000013453451603014146 5ustar www-datawww-datajekyll-watch-2.2.1/jekyll-watch.gemspec0000644000004100000410000000434113453451603020113 0ustar www-datawww-data######################################################### # This file has been automatically generated by gem2tgz # ######################################################### # -*- encoding: utf-8 -*- # stub: jekyll-watch 2.2.1 ruby lib Gem::Specification.new do |s| s.name = "jekyll-watch".freeze s.version = "2.2.1" s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= s.require_paths = ["lib".freeze] s.authors = ["Parker Moore".freeze] s.date = "2019-03-22" s.email = ["parkrmoore@gmail.com".freeze] s.files = ["lib/jekyll-watch.rb".freeze, "lib/jekyll-watch/version.rb".freeze, "lib/jekyll/commands/watch.rb".freeze, "lib/jekyll/watcher.rb".freeze] s.homepage = "https://github.com/jekyll/jekyll-watch".freeze s.licenses = ["MIT".freeze] s.required_ruby_version = Gem::Requirement.new(">= 2.3.0".freeze) s.rubygems_version = "2.5.2.1".freeze s.summary = "Rebuild your Jekyll site when a file changes with the `--watch` switch.".freeze if s.respond_to? :specification_version then s.specification_version = 4 if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then s.add_development_dependency(%q.freeze, [">= 0"]) s.add_development_dependency(%q.freeze, ["< 5.0", ">= 3.6"]) s.add_runtime_dependency(%q.freeze, ["~> 3.0"]) s.add_development_dependency(%q.freeze, [">= 0"]) s.add_development_dependency(%q.freeze, ["~> 3.0"]) s.add_development_dependency(%q.freeze, ["~> 0.5"]) else s.add_dependency(%q.freeze, [">= 0"]) s.add_dependency(%q.freeze, ["< 5.0", ">= 3.6"]) s.add_dependency(%q.freeze, ["~> 3.0"]) s.add_dependency(%q.freeze, [">= 0"]) s.add_dependency(%q.freeze, ["~> 3.0"]) s.add_dependency(%q.freeze, ["~> 0.5"]) end else s.add_dependency(%q.freeze, [">= 0"]) s.add_dependency(%q.freeze, ["< 5.0", ">= 3.6"]) s.add_dependency(%q.freeze, ["~> 3.0"]) s.add_dependency(%q.freeze, [">= 0"]) s.add_dependency(%q.freeze, ["~> 3.0"]) s.add_dependency(%q.freeze, ["~> 0.5"]) end end jekyll-watch-2.2.1/lib/0000755000004100000410000000000013453451603014714 5ustar www-datawww-datajekyll-watch-2.2.1/lib/jekyll-watch/0000755000004100000410000000000013453451603017312 5ustar www-datawww-datajekyll-watch-2.2.1/lib/jekyll-watch/version.rb0000644000004100000410000000014313453451603021322 0ustar www-datawww-data# frozen_string_literal: true module Jekyll module Watch VERSION = "2.2.1" end end jekyll-watch-2.2.1/lib/jekyll/0000755000004100000410000000000013453451603016206 5ustar www-datawww-datajekyll-watch-2.2.1/lib/jekyll/watcher.rb0000644000004100000410000001002513453451603020166 0ustar www-datawww-data# frozen_string_literal: true require "listen" module Jekyll module Watcher extend self # Public: Continuously watch for file changes and rebuild the site # whenever a change is detected. # # If the optional site argument is populated, that site instance will be # reused and the options Hash ignored. Otherwise, a new site instance will # be instantiated from the options Hash and used. # # options - A Hash containing the site configuration # site - The current site instance (populated starting with Jekyll 3.2) # (optional, default: nil) # # Returns nothing. 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 for '#{options["source"]}'" unless options["serving"] trap("INT") do listener.stop Jekyll.logger.info "", "Halting auto-regeneration." exit 0 end sleep_forever end rescue ThreadError # You pressed Ctrl-C, oh my! end private def build_listener(site, options) Listen.to( options["source"], :ignore => listen_ignore_paths(options), :force_polling => options["force_polling"], &listen_handler(site) ) end 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")}" c.each { |path| Jekyll.logger.info "", path["#{site.source}/".length..-1] } process(site, t) end end def normalize_encoding(obj, desired_encoding) case obj when Array obj.map { |entry| entry.encode!(desired_encoding, entry.encoding) } when String obj.encode!(desired_encoding, obj.encoding) end end def custom_excludes(options) Array(options["exclude"]).map { |e| Jekyll.sanitized_path(options["source"], e) } end def config_files(options) %w(yml yaml toml).map do |ext| Jekyll.sanitized_path(options["source"], "_config.#{ext}") end end def to_exclude(options) [ config_files(options), options["destination"], custom_excludes(options), ].flatten end # 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 def listen_ignore_paths(options) source = Pathname.new(options["source"]).expand_path paths = to_exclude(options) paths.map do |p| absolute_path = Pathname.new(normalize_encoding(p, options["source"].encoding)).expand_path next unless absolute_path.exist? begin relative_path = absolute_path.relative_path_from(source).to_s relative_path = File.join(relative_path, "") if absolute_path.directory? unless relative_path.start_with?("../") path_to_ignore = %r!^#{Regexp.escape(relative_path)}! Jekyll.logger.debug "Watcher:", "Ignoring #{path_to_ignore}" path_to_ignore end rescue ArgumentError # Could not find a relative path end end.compact + [%r!^\.jekyll\-metadata!] end def sleep_forever loop { sleep 1000 } end def process(site, time) begin site.process Jekyll.logger.info "", "...done in #{Time.now - time} seconds." rescue StandardError => e Jekyll.logger.warn "Error:", e.message Jekyll.logger.warn "Error:", "Run jekyll build --trace for more information." end Jekyll.logger.info "" end end end jekyll-watch-2.2.1/lib/jekyll/commands/0000755000004100000410000000000013453451603020007 5ustar www-datawww-datajekyll-watch-2.2.1/lib/jekyll/commands/watch.rb0000644000004100000410000000065713453451603021452 0ustar www-datawww-data# frozen_string_literal: true module Jekyll module Commands module Watch extend self def init_with_program(prog); end # Build your jekyll site # Continuously watch if `watch` is set to true in the config. def process(options) Jekyll.logger.log_level = :error if options["quiet"] Jekyll::Watcher.watch(options) if options["watch"] end end end end jekyll-watch-2.2.1/lib/jekyll-watch.rb0000644000004100000410000000021613453451603017636 0ustar www-datawww-data# frozen_string_literal: true require "jekyll-watch/version" require_relative "jekyll/watcher" require_relative "jekyll/commands/watch"