blob: dac914fbaf8b473b6cc3cc1c32be4148298f9bea [file] [log] [blame]
require 'logger'
require 'sass-listen/logger'
require 'sass-listen/listener'
require 'sass-listen/internals/thread_pool'
# Always set up logging by default first time file is required
#
# NOTE: If you need to clear the logger completely, do so *after*
# requiring this file. If you need to set a custom logger,
# require the listen/logger file and set the logger before requiring
# this file.
SassListen.setup_default_logger_if_unset
# Won't print anything by default because of level - unless you've set
# LISTEN_GEM_DEBUGGING or provided your own logger with a high enough level
SassListen::Logger.info "SassListen loglevel set to: #{SassListen.logger.level}"
SassListen::Logger.info "SassListen version: #{SassListen::VERSION}"
module SassListen
class << self
# Listens to file system modifications on a either single directory or
# multiple directories.
#
# @param (see SassListen::Listener#new)
#
# @yield [modified, added, removed] the changed files
# @yieldparam [Array<String>] modified the list of modified files
# @yieldparam [Array<String>] added the list of added files
# @yieldparam [Array<String>] removed the list of removed files
#
# @return [SassListen::Listener] the listener
#
def to(*args, &block)
@listeners ||= []
Listener.new(*args, &block).tap do |listener|
@listeners << listener
end
end
# This is used by the `listen` binary to handle Ctrl-C
#
def stop
Internals::ThreadPool.stop
@listeners ||= []
# TODO: should use a mutex for this
@listeners.each do |listener|
# call stop to halt the main loop
listener.stop
end
@listeners = nil
end
end
end