blob: 1f94971228a0c7a223a6ee2ec0db326295c17d96 [file] [log] [blame]
require 'sass-listen/adapter/base'
require 'sass-listen/adapter/bsd'
require 'sass-listen/adapter/darwin'
require 'sass-listen/adapter/linux'
require 'sass-listen/adapter/polling'
require 'sass-listen/adapter/windows'
module SassListen
module Adapter
OPTIMIZED_ADAPTERS = [Darwin, Linux, BSD, Windows]
POLLING_FALLBACK_MESSAGE = 'SassListen will be polling for changes.'\
'Learn more at https://github.com/guard/listen#listen-adapters.'
def self.select(options = {})
_log :debug, 'Adapter: considering polling ...'
return Polling if options[:force_polling]
_log :debug, 'Adapter: considering optimized backend...'
return _usable_adapter_class if _usable_adapter_class
_log :debug, 'Adapter: falling back to polling...'
_warn_polling_fallback(options)
Polling
rescue
_log :warn, format('Adapter: failed: %s:%s', $ERROR_POSITION.inspect,
$ERROR_POSITION * "\n")
raise
end
private
def self._usable_adapter_class
OPTIMIZED_ADAPTERS.detect(&:usable?)
end
def self._warn_polling_fallback(options)
msg = options.fetch(:polling_fallback_message, POLLING_FALLBACK_MESSAGE)
Kernel.warn "[SassListen warning]:\n #{msg}" if msg
end
def self._log(type, message)
SassListen::Logger.send(type, message)
end
end
end