sass-listen 3.0.7 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/{listen.rb → sass-listen.rb} +9 -9
- data/lib/{listen → sass-listen}/adapter.rb +10 -10
- data/lib/{listen → sass-listen}/adapter/base.rb +9 -9
- data/lib/{listen → sass-listen}/adapter/bsd.rb +1 -1
- data/lib/{listen → sass-listen}/adapter/config.rb +1 -1
- data/lib/{listen → sass-listen}/adapter/darwin.rb +23 -6
- data/lib/{listen → sass-listen}/adapter/linux.rb +5 -3
- data/lib/{listen → sass-listen}/adapter/polling.rb +1 -1
- data/lib/{listen → sass-listen}/adapter/windows.rb +1 -1
- data/lib/{listen → sass-listen}/backend.rb +6 -4
- data/lib/{listen → sass-listen}/change.rb +6 -6
- data/lib/{listen → sass-listen}/cli.rb +5 -5
- data/lib/{listen → sass-listen}/directory.rb +16 -5
- data/lib/{listen → sass-listen}/event/config.rb +1 -1
- data/lib/{listen → sass-listen}/event/loop.rb +4 -4
- data/lib/{listen → sass-listen}/event/processor.rb +3 -3
- data/lib/{listen → sass-listen}/event/queue.rb +3 -1
- data/lib/{listen → sass-listen}/file.rb +3 -3
- data/lib/{listen → sass-listen}/fsm.rb +1 -1
- data/lib/{listen → sass-listen}/internals/thread_pool.rb +10 -2
- data/lib/{listen → sass-listen}/listener.rb +14 -14
- data/lib/{listen → sass-listen}/listener/config.rb +1 -1
- data/lib/{listen → sass-listen}/logger.rb +2 -2
- data/lib/{listen → sass-listen}/options.rb +2 -2
- data/lib/{listen → sass-listen}/queue_optimizer.rb +2 -2
- data/lib/{listen → sass-listen}/record.rb +3 -3
- data/lib/{listen → sass-listen}/record/entry.rb +13 -2
- data/lib/{listen → sass-listen}/record/symlink_detector.rb +1 -1
- data/lib/{listen → sass-listen}/silencer.rb +1 -1
- data/lib/{listen → sass-listen}/silencer/controller.rb +1 -1
- data/lib/sass-listen/version.rb +3 -0
- metadata +49 -40
- data/bin/listen +0 -12
- data/lib/listen/version.rb +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f837a533260d79766fbf0cb58216fbb4262d5bba
|
4
|
+
data.tar.gz: 237f28137dc5d1e7e82526abac3a8e693b62ce89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1c6fe33035fd7e489e7ccbe9d3ca47a2af3f76a8942f573d418d77cb00ae03d53f68e591735ae69260dd0517f6820ad6af9f7c44eb0a7c3c806c344ea8314f5e
|
7
|
+
data.tar.gz: 4cf4f0f9fd9a61a32d079dea7c42e321702215e3a6c93ccd8e8c9eb5dfed8827e162a68862f2905657f8b5c03b54f6a7bea98ffbfc1ee2f709f7126430ba9522
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'logger'
|
2
|
-
require 'listen/logger'
|
3
|
-
require 'listen/listener'
|
2
|
+
require 'sass-listen/logger'
|
3
|
+
require 'sass-listen/listener'
|
4
4
|
|
5
|
-
require 'listen/internals/thread_pool'
|
5
|
+
require 'sass-listen/internals/thread_pool'
|
6
6
|
|
7
7
|
# Always set up logging by default first time file is required
|
8
8
|
#
|
@@ -10,26 +10,26 @@ require 'listen/internals/thread_pool'
|
|
10
10
|
# requiring this file. If you need to set a custom logger,
|
11
11
|
# require the listen/logger file and set the logger before requiring
|
12
12
|
# this file.
|
13
|
-
|
13
|
+
SassListen.setup_default_logger_if_unset
|
14
14
|
|
15
15
|
# Won't print anything by default because of level - unless you've set
|
16
16
|
# LISTEN_GEM_DEBUGGING or provided your own logger with a high enough level
|
17
|
-
|
18
|
-
|
17
|
+
SassListen::Logger.info "SassListen loglevel set to: #{SassListen.logger.level}"
|
18
|
+
SassListen::Logger.info "SassListen version: #{SassListen::VERSION}"
|
19
19
|
|
20
|
-
module
|
20
|
+
module SassListen
|
21
21
|
class << self
|
22
22
|
# Listens to file system modifications on a either single directory or
|
23
23
|
# multiple directories.
|
24
24
|
#
|
25
|
-
# @param (see
|
25
|
+
# @param (see SassListen::Listener#new)
|
26
26
|
#
|
27
27
|
# @yield [modified, added, removed] the changed files
|
28
28
|
# @yieldparam [Array<String>] modified the list of modified files
|
29
29
|
# @yieldparam [Array<String>] added the list of added files
|
30
30
|
# @yieldparam [Array<String>] removed the list of removed files
|
31
31
|
#
|
32
|
-
# @return [
|
32
|
+
# @return [SassListen::Listener] the listener
|
33
33
|
#
|
34
34
|
def to(*args, &block)
|
35
35
|
@listeners ||= []
|
@@ -1,14 +1,14 @@
|
|
1
|
-
require 'listen/adapter/base'
|
2
|
-
require 'listen/adapter/bsd'
|
3
|
-
require 'listen/adapter/darwin'
|
4
|
-
require 'listen/adapter/linux'
|
5
|
-
require 'listen/adapter/polling'
|
6
|
-
require 'listen/adapter/windows'
|
1
|
+
require 'sass-listen/adapter/base'
|
2
|
+
require 'sass-listen/adapter/bsd'
|
3
|
+
require 'sass-listen/adapter/darwin'
|
4
|
+
require 'sass-listen/adapter/linux'
|
5
|
+
require 'sass-listen/adapter/polling'
|
6
|
+
require 'sass-listen/adapter/windows'
|
7
7
|
|
8
|
-
module
|
8
|
+
module SassListen
|
9
9
|
module Adapter
|
10
10
|
OPTIMIZED_ADAPTERS = [Darwin, Linux, BSD, Windows]
|
11
|
-
POLLING_FALLBACK_MESSAGE = '
|
11
|
+
POLLING_FALLBACK_MESSAGE = 'SassListen will be polling for changes.'\
|
12
12
|
'Learn more at https://github.com/guard/listen#listen-adapters.'
|
13
13
|
|
14
14
|
def self.select(options = {})
|
@@ -33,11 +33,11 @@ module Listen
|
|
33
33
|
|
34
34
|
def self._warn_polling_fallback(options)
|
35
35
|
msg = options.fetch(:polling_fallback_message, POLLING_FALLBACK_MESSAGE)
|
36
|
-
Kernel.warn "[
|
36
|
+
Kernel.warn "[SassListen warning]:\n #{msg}" if msg
|
37
37
|
end
|
38
38
|
|
39
39
|
def self._log(type, message)
|
40
|
-
|
40
|
+
SassListen::Logger.send(type, message)
|
41
41
|
end
|
42
42
|
end
|
43
43
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require 'listen/options'
|
2
|
-
require 'listen/record'
|
3
|
-
require 'listen/change'
|
1
|
+
require 'sass-listen/options'
|
2
|
+
require 'sass-listen/record'
|
3
|
+
require 'sass-listen/change'
|
4
4
|
|
5
|
-
module
|
5
|
+
module SassListen
|
6
6
|
module Adapter
|
7
7
|
class Base
|
8
8
|
attr_reader :options
|
@@ -21,7 +21,7 @@ module Listen
|
|
21
21
|
fail 'No directories to watch!' if config.directories.empty?
|
22
22
|
|
23
23
|
defaults = self.class.const_get('DEFAULTS')
|
24
|
-
@options =
|
24
|
+
@options = SassListen::Options.new(config.adapter_options, defaults)
|
25
25
|
rescue
|
26
26
|
_log_exception 'adapter config failed: %s:%s called from: %s', caller
|
27
27
|
raise
|
@@ -70,7 +70,7 @@ module Listen
|
|
70
70
|
@started = true
|
71
71
|
|
72
72
|
calling_stack = caller.dup
|
73
|
-
|
73
|
+
SassListen::Internals::ThreadPool.add do
|
74
74
|
begin
|
75
75
|
@snapshots.values.each do |snapshot|
|
76
76
|
_timed('Record.build()') { snapshot.record.build }
|
@@ -102,9 +102,9 @@ module Listen
|
|
102
102
|
start = Time.now.to_f
|
103
103
|
yield
|
104
104
|
diff = Time.now.to_f - start
|
105
|
-
|
105
|
+
SassListen::Logger.info format('%s: %.05f seconds', title, diff)
|
106
106
|
rescue
|
107
|
-
|
107
|
+
SassListen::Logger.warn "#{title} crashed: #{$ERROR_INFO.inspect}"
|
108
108
|
raise
|
109
109
|
end
|
110
110
|
|
@@ -130,7 +130,7 @@ module Listen
|
|
130
130
|
end
|
131
131
|
|
132
132
|
def self._log(*args, &block)
|
133
|
-
|
133
|
+
SassListen::Logger.send(*args, &block)
|
134
134
|
end
|
135
135
|
end
|
136
136
|
end
|
@@ -1,22 +1,39 @@
|
|
1
1
|
require 'thread'
|
2
|
-
require 'listen/internals/thread_pool'
|
2
|
+
require 'sass-listen/internals/thread_pool'
|
3
3
|
|
4
|
-
module
|
4
|
+
module SassListen
|
5
5
|
module Adapter
|
6
6
|
# Adapter implementation for Mac OS X `FSEvents`.
|
7
7
|
#
|
8
8
|
class Darwin < Base
|
9
|
-
OS_REGEXP = /darwin(1
|
9
|
+
OS_REGEXP = /darwin(?<major_version>1\d+)/i
|
10
10
|
|
11
11
|
# The default delay between checking for changes.
|
12
12
|
DEFAULTS = { latency: 0.1 }
|
13
13
|
|
14
|
+
INCOMPATIBLE_GEM_VERSION = <<-EOS.gsub(/^ {8}/, '')
|
15
|
+
rb-fsevent > 0.9.4 no longer supports OS X 10.6 through 10.8.
|
16
|
+
|
17
|
+
Please add the following to your Gemfile to avoid polling for changes:
|
18
|
+
require 'rbconfig'
|
19
|
+
if RbConfig::CONFIG['target_os'] =~ /darwin(1[0-3])/i
|
20
|
+
gem 'rb-fsevent', '<= 0.9.4'
|
21
|
+
end
|
22
|
+
EOS
|
23
|
+
|
24
|
+
def self.usable?
|
25
|
+
require 'rb-fsevent'
|
26
|
+
darwin_version = RbConfig::CONFIG['target_os'][OS_REGEXP, :major_version] or return false
|
27
|
+
return true if darwin_version.to_i >= 13 # darwin13 is OS X 10.9
|
28
|
+
return true if Gem::Version.new(FSEvent::VERSION) <= Gem::Version.new('0.9.4')
|
29
|
+
Kernel.warn INCOMPATIBLE_GEM_VERSION
|
30
|
+
false
|
31
|
+
end
|
32
|
+
|
14
33
|
private
|
15
34
|
|
16
35
|
# NOTE: each directory gets a DIFFERENT callback!
|
17
36
|
def _configure(dir, &callback)
|
18
|
-
require 'rb-fsevent'
|
19
|
-
|
20
37
|
opts = { latency: options.latency }
|
21
38
|
|
22
39
|
@workers ||= ::Queue.new
|
@@ -57,7 +74,7 @@ module Listen
|
|
57
74
|
workers.each do |worker|
|
58
75
|
# NOTE: while passing local variables to the block below is not
|
59
76
|
# thread safe, using 'worker' from the enumerator above is ok
|
60
|
-
|
77
|
+
SassListen::Internals::ThreadPool.add { _run_worker(worker) }
|
61
78
|
end
|
62
79
|
end
|
63
80
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module SassListen
|
2
2
|
module Adapter
|
3
3
|
# @see https://github.com/nex3/rb-inotify
|
4
4
|
class Linux < Base
|
@@ -22,7 +22,7 @@ module Listen
|
|
22
22
|
'/wiki/Increasing-the-amount-of-inotify-watchers'
|
23
23
|
|
24
24
|
INOTIFY_LIMIT_MESSAGE = <<-EOS.gsub(/^\s*/, '')
|
25
|
-
FATAL:
|
25
|
+
FATAL: SassListen error: unable to monitor directories for changes.
|
26
26
|
Visit #{WIKI_URL} for info on how to fix this.
|
27
27
|
EOS
|
28
28
|
|
@@ -35,7 +35,9 @@ module Listen
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def _run
|
38
|
+
Thread.current[:listen_blocking_read_thread] = true
|
38
39
|
@worker.run
|
40
|
+
Thread.current[:listen_blocking_read_thread] = false
|
39
41
|
end
|
40
42
|
|
41
43
|
def _process_event(dir, event)
|
@@ -99,7 +101,7 @@ module Listen
|
|
99
101
|
end
|
100
102
|
|
101
103
|
def _stop
|
102
|
-
@worker.close
|
104
|
+
@worker && @worker.close
|
103
105
|
end
|
104
106
|
end
|
105
107
|
end
|
@@ -1,10 +1,12 @@
|
|
1
|
-
require 'listen/adapter'
|
2
|
-
require 'listen/adapter/base'
|
3
|
-
require 'listen/adapter/config'
|
1
|
+
require 'sass-listen/adapter'
|
2
|
+
require 'sass-listen/adapter/base'
|
3
|
+
require 'sass-listen/adapter/config'
|
4
|
+
|
5
|
+
require 'forwardable'
|
4
6
|
|
5
7
|
# This class just aggregates configuration object to avoid Listener specs
|
6
8
|
# from exploding with huge test setup blocks
|
7
|
-
module
|
9
|
+
module SassListen
|
8
10
|
class Backend
|
9
11
|
def initialize(directories, queue, silencer, config)
|
10
12
|
adapter_select_opts = config.adapter_select_options
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require 'listen/file'
|
2
|
-
require 'listen/directory'
|
1
|
+
require 'sass-listen/file'
|
2
|
+
require 'sass-listen/directory'
|
3
3
|
|
4
|
-
module
|
4
|
+
module SassListen
|
5
5
|
# TODO: rename to Snapshot
|
6
6
|
class Change
|
7
7
|
# TODO: test this class for coverage
|
@@ -35,13 +35,13 @@ module Listen
|
|
35
35
|
cookie = options[:cookie]
|
36
36
|
|
37
37
|
if !cookie && config.silenced?(rel_path, type)
|
38
|
-
|
38
|
+
SassListen::Logger.debug { "(silenced): #{rel_path.inspect}" }
|
39
39
|
return
|
40
40
|
end
|
41
41
|
|
42
42
|
path = watched_dir + rel_path
|
43
43
|
|
44
|
-
|
44
|
+
SassListen::Logger.debug do
|
45
45
|
log_details = options[:silence] && 'recording' || change || 'unknown'
|
46
46
|
"#{log_details}: #{type}:#{path} (#{options.inspect})"
|
47
47
|
end
|
@@ -67,7 +67,7 @@ module Listen
|
|
67
67
|
__method__,
|
68
68
|
exinspect,
|
69
69
|
ex.backtrace * "\n")
|
70
|
-
|
70
|
+
SassListen::Logger.error(msg)
|
71
71
|
raise
|
72
72
|
end
|
73
73
|
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'thor'
|
2
|
-
require 'listen'
|
2
|
+
require 'sass-listen'
|
3
3
|
require 'logger'
|
4
4
|
|
5
|
-
module
|
5
|
+
module SassListen
|
6
6
|
class CLI < Thor
|
7
7
|
default_task :start
|
8
8
|
|
9
|
-
desc 'start', 'Starts
|
9
|
+
desc 'start', 'Starts SassListen'
|
10
10
|
|
11
11
|
class_option :verbose,
|
12
12
|
type: :boolean,
|
@@ -27,7 +27,7 @@ module Listen
|
|
27
27
|
banner: 'Convert paths relative to current directory'
|
28
28
|
|
29
29
|
def start
|
30
|
-
|
30
|
+
SassListen::Forwarder.new(options).start
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
@@ -52,7 +52,7 @@ module Listen
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
listener =
|
55
|
+
listener = SassListen.to(
|
56
56
|
directory,
|
57
57
|
relative: relative,
|
58
58
|
&callback)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'set'
|
2
2
|
|
3
|
-
module
|
3
|
+
module SassListen
|
4
4
|
# TODO: refactor (turn it into a normal object, cache the stat, etc)
|
5
5
|
class Directory
|
6
6
|
def self.scan(snapshot, rel_path, options)
|
@@ -12,9 +12,9 @@ module Listen
|
|
12
12
|
|
13
13
|
# TODO: use children(with_directory: false)
|
14
14
|
path = dir + rel_path
|
15
|
-
current = Set.new(path
|
15
|
+
current = Set.new(_children(path))
|
16
16
|
|
17
|
-
|
17
|
+
SassListen::Logger.debug do
|
18
18
|
format('%s: %s(%s): %s -> %s',
|
19
19
|
(options[:silence] ? 'Recording' : 'Scanning'),
|
20
20
|
rel_path, options.inspect, previous.inspect, current.inspect)
|
@@ -28,7 +28,7 @@ module Listen
|
|
28
28
|
end
|
29
29
|
rescue Errno::ENOENT
|
30
30
|
# The directory changed meanwhile, so rescan it
|
31
|
-
current = Set.new(path
|
31
|
+
current = Set.new(_children(path))
|
32
32
|
retry
|
33
33
|
end
|
34
34
|
|
@@ -47,7 +47,7 @@ module Listen
|
|
47
47
|
_async_changes(snapshot, path, previous, options)
|
48
48
|
_change(snapshot, :file, rel_path, options)
|
49
49
|
rescue
|
50
|
-
|
50
|
+
SassListen::Logger.warn do
|
51
51
|
format('scan DIED: %s:%s', $ERROR_INFO, $ERROR_POSITION * "\n")
|
52
52
|
end
|
53
53
|
raise
|
@@ -72,5 +72,16 @@ module Listen
|
|
72
72
|
opts.delete(:recursive)
|
73
73
|
snapshot.invalidate(type, path, opts)
|
74
74
|
end
|
75
|
+
|
76
|
+
def self._children(path)
|
77
|
+
return path.children unless RUBY_ENGINE == 'jruby'
|
78
|
+
|
79
|
+
# JRuby inconsistency workaround, see:
|
80
|
+
# https://github.com/jruby/jruby/issues/3840
|
81
|
+
exists = path.exist?
|
82
|
+
directory = path.directory?
|
83
|
+
return path.children unless (exists && !directory)
|
84
|
+
raise Errno::ENOTDIR, path.to_s
|
85
|
+
end
|
75
86
|
end
|
76
87
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'thread'
|
2
2
|
|
3
3
|
require 'timeout'
|
4
|
-
require 'listen/event/processor'
|
4
|
+
require 'sass-listen/event/processor'
|
5
5
|
|
6
|
-
module
|
6
|
+
module SassListen
|
7
7
|
module Event
|
8
8
|
class Loop
|
9
9
|
class Error < RuntimeError
|
@@ -42,7 +42,7 @@ module Listen
|
|
42
42
|
_wait_for_changes(q, config)
|
43
43
|
end
|
44
44
|
|
45
|
-
|
45
|
+
SassListen::Logger.debug('Waiting for processing to start...')
|
46
46
|
Timeout.timeout(5) { q.pop }
|
47
47
|
end
|
48
48
|
|
@@ -105,7 +105,7 @@ module Listen
|
|
105
105
|
indent,
|
106
106
|
ex.backtrace * indent
|
107
107
|
)
|
108
|
-
|
108
|
+
SassListen::Logger.error(msg)
|
109
109
|
end
|
110
110
|
|
111
111
|
def _wakeup(reason)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module SassListen
|
2
2
|
module Event
|
3
3
|
class Processor
|
4
4
|
def initialize(config, reasons)
|
@@ -19,7 +19,7 @@ module Listen
|
|
19
19
|
_process_changes
|
20
20
|
end
|
21
21
|
rescue Stopped
|
22
|
-
|
22
|
+
SassListen::Logger.debug('Processing stopped')
|
23
23
|
end
|
24
24
|
|
25
25
|
private
|
@@ -113,7 +113,7 @@ module Listen
|
|
113
113
|
|
114
114
|
block_start = _timestamp
|
115
115
|
config.call(*result)
|
116
|
-
|
116
|
+
SassListen::Logger.debug "Callback took #{_timestamp - block_start} sec"
|
117
117
|
end
|
118
118
|
|
119
119
|
attr_reader :config
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'digest/md5'
|
2
2
|
|
3
|
-
module
|
3
|
+
module SassListen
|
4
4
|
class File
|
5
5
|
def self.change(record, rel_path)
|
6
6
|
path = Pathname.new(record.root) + rel_path
|
@@ -35,7 +35,7 @@ module Listen
|
|
35
35
|
# when file was changed and when the event was triggered.
|
36
36
|
#
|
37
37
|
# If a file is saved at ???14.998, by the time the event is
|
38
|
-
# actually received by
|
38
|
+
# actually received by SassListen, the time could already be e.g.
|
39
39
|
# ???15.7.
|
40
40
|
#
|
41
41
|
# And since Darwin adapter uses directory scanning, the file
|
@@ -64,7 +64,7 @@ module Listen
|
|
64
64
|
record.unset_path(rel_path)
|
65
65
|
:removed
|
66
66
|
rescue
|
67
|
-
|
67
|
+
SassListen::Logger.debug "lstat failed for: #{rel_path} (#{$ERROR_INFO})"
|
68
68
|
raise
|
69
69
|
end
|
70
70
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module SassListen
|
2
2
|
# @private api
|
3
3
|
module Internals
|
4
4
|
module ThreadPool
|
@@ -13,8 +13,16 @@ module Listen
|
|
13
13
|
return if @threads.empty? # return to avoid using possibly stubbed Queue
|
14
14
|
|
15
15
|
killed = Queue.new
|
16
|
+
# You can't kill a read on a descriptor in JRuby, so let's just
|
17
|
+
# ignore running threads (listen rb-inotify waiting for disk activity
|
18
|
+
# before closing) pray threads die faster than they are created...
|
19
|
+
limit = RUBY_ENGINE == 'jruby' ? [1] : []
|
20
|
+
|
16
21
|
killed << @threads.pop.kill until @threads.empty?
|
17
|
-
|
22
|
+
until killed.empty?
|
23
|
+
th = killed.pop
|
24
|
+
th.join(*limit) unless th[:listen_blocking_read_thread]
|
25
|
+
end
|
18
26
|
end
|
19
27
|
end
|
20
28
|
end
|
@@ -1,30 +1,30 @@
|
|
1
1
|
require 'English'
|
2
2
|
|
3
|
-
require 'listen/version'
|
3
|
+
require 'sass-listen/version'
|
4
4
|
|
5
|
-
require 'listen/backend'
|
5
|
+
require 'sass-listen/backend'
|
6
6
|
|
7
|
-
require 'listen/silencer'
|
8
|
-
require 'listen/silencer/controller'
|
7
|
+
require 'sass-listen/silencer'
|
8
|
+
require 'sass-listen/silencer/controller'
|
9
9
|
|
10
|
-
require 'listen/queue_optimizer'
|
10
|
+
require 'sass-listen/queue_optimizer'
|
11
11
|
|
12
|
-
require 'listen/fsm'
|
12
|
+
require 'sass-listen/fsm'
|
13
13
|
|
14
|
-
require 'listen/event/loop'
|
15
|
-
require 'listen/event/queue'
|
16
|
-
require 'listen/event/config'
|
14
|
+
require 'sass-listen/event/loop'
|
15
|
+
require 'sass-listen/event/queue'
|
16
|
+
require 'sass-listen/event/config'
|
17
17
|
|
18
|
-
require 'listen/listener/config'
|
18
|
+
require 'sass-listen/listener/config'
|
19
19
|
|
20
|
-
module
|
20
|
+
module SassListen
|
21
21
|
class Listener
|
22
|
-
include
|
22
|
+
include SassListen::FSM
|
23
23
|
|
24
24
|
# Initializes the directories listener.
|
25
25
|
#
|
26
26
|
# @param [String] directory the directories to listen to
|
27
|
-
# @param [Hash] options the listen options (see
|
27
|
+
# @param [Hash] options the listen options (see SassListen::Listener::Options)
|
28
28
|
#
|
29
29
|
# @yield [modified, added, removed] the changed files
|
30
30
|
# @yieldparam [Array<String>] modified the list of modified files
|
@@ -61,7 +61,7 @@ module Listen
|
|
61
61
|
|
62
62
|
default_state :initializing
|
63
63
|
|
64
|
-
state :initializing, to: :backend_started
|
64
|
+
state :initializing, to: [:backend_started, :stopped]
|
65
65
|
|
66
66
|
state :backend_started, to: [:frontend_ready, :stopped] do
|
67
67
|
backend.start
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module SassListen
|
2
2
|
def self.logger
|
3
3
|
@logger ||= nil
|
4
4
|
end
|
@@ -25,7 +25,7 @@ module Listen
|
|
25
25
|
class Logger
|
26
26
|
[:fatal, :error, :warn, :info, :debug].each do |meth|
|
27
27
|
define_singleton_method(meth) do |*args, &block|
|
28
|
-
|
28
|
+
SassListen.logger.public_send(meth, *args, &block) if SassListen.logger
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module SassListen
|
2
2
|
class Options
|
3
3
|
def initialize(opts, defaults)
|
4
4
|
@options = {}
|
@@ -10,7 +10,7 @@ module Listen
|
|
10
10
|
return if given_options.empty?
|
11
11
|
|
12
12
|
msg = "Unknown options: #{given_options.inspect}"
|
13
|
-
|
13
|
+
SassListen::Logger.warn msg
|
14
14
|
fail msg
|
15
15
|
end
|
16
16
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module SassListen
|
2
2
|
class QueueOptimizer
|
3
3
|
class Config
|
4
4
|
def initialize(adapter_class, silencer)
|
@@ -15,7 +15,7 @@ module Listen
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def debug(*args, &block)
|
18
|
-
|
18
|
+
SassListen.logger.debug(*args, &block)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'thread'
|
2
|
-
require 'listen/record/entry'
|
3
|
-
require 'listen/record/symlink_detector'
|
2
|
+
require 'sass-listen/record/entry'
|
3
|
+
require 'sass-listen/record/symlink_detector'
|
4
4
|
|
5
|
-
module
|
5
|
+
module SassListen
|
6
6
|
class Record
|
7
7
|
# TODO: one Record object per watched directory?
|
8
8
|
# TODO: deprecate
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module SassListen
|
2
2
|
# @private api
|
3
3
|
class Record
|
4
4
|
# Represents a directory entry (dir or file)
|
@@ -13,7 +13,7 @@ module Listen
|
|
13
13
|
|
14
14
|
def children
|
15
15
|
child_relative = _join
|
16
|
-
(
|
16
|
+
(_entries(sys_path) - %w(. ..)).map do |name|
|
17
17
|
Entry.new(@root, child_relative, name)
|
18
18
|
end
|
19
19
|
end
|
@@ -46,6 +46,17 @@ module Listen
|
|
46
46
|
args = [@relative, @name].compact
|
47
47
|
args.empty? ? nil : ::File.join(*args)
|
48
48
|
end
|
49
|
+
|
50
|
+
def _entries(dir)
|
51
|
+
return Dir.entries(dir) unless RUBY_ENGINE == 'jruby'
|
52
|
+
|
53
|
+
# JRuby inconsistency workaround, see:
|
54
|
+
# https://github.com/jruby/jruby/issues/3840
|
55
|
+
exists = ::File.exist?(dir)
|
56
|
+
directory = ::File.directory?(dir)
|
57
|
+
return Dir.entries(dir) unless (exists && !directory)
|
58
|
+
raise Errno::ENOTDIR, dir
|
59
|
+
end
|
49
60
|
end
|
50
61
|
end
|
51
62
|
end
|
metadata
CHANGED
@@ -1,33 +1,42 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sass-listen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thibaud Guillaume-Gentil
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rb-fsevent
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.9'
|
17
20
|
- - ">="
|
18
21
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.9.
|
22
|
+
version: 0.9.4
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
27
|
+
- - "~>"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0.9'
|
24
30
|
- - ">="
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.9.
|
32
|
+
version: 0.9.4
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: rb-inotify
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0.9'
|
31
40
|
- - ">="
|
32
41
|
- !ruby/object:Gem::Version
|
33
42
|
version: 0.9.7
|
@@ -35,6 +44,9 @@ dependencies:
|
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0.9'
|
38
50
|
- - ">="
|
39
51
|
- !ruby/object:Gem::Version
|
40
52
|
version: 0.9.7
|
@@ -55,8 +67,7 @@ dependencies:
|
|
55
67
|
description: This fork of guard/listen provides a stable API for users of the ruby
|
56
68
|
Sass CLI
|
57
69
|
email: thibaud@thibaud.gg
|
58
|
-
executables:
|
59
|
-
- listen
|
70
|
+
executables: []
|
60
71
|
extensions: []
|
61
72
|
extra_rdoc_files: []
|
62
73
|
files:
|
@@ -64,38 +75,37 @@ files:
|
|
64
75
|
- CONTRIBUTING.md
|
65
76
|
- LICENSE.txt
|
66
77
|
- README.md
|
67
|
-
-
|
68
|
-
- lib/listen.rb
|
69
|
-
- lib/listen/adapter.rb
|
70
|
-
- lib/listen/adapter/
|
71
|
-
- lib/listen/adapter/
|
72
|
-
- lib/listen/adapter/
|
73
|
-
- lib/listen/adapter/
|
74
|
-
- lib/listen/adapter/
|
75
|
-
- lib/listen/adapter/
|
76
|
-
- lib/listen/
|
77
|
-
- lib/listen/
|
78
|
-
- lib/listen/
|
79
|
-
- lib/listen/
|
80
|
-
- lib/listen/
|
81
|
-
- lib/listen/event/
|
82
|
-
- lib/listen/event/
|
83
|
-
- lib/listen/event/
|
84
|
-
- lib/listen/
|
85
|
-
- lib/listen/
|
86
|
-
- lib/listen/
|
87
|
-
- lib/listen/
|
88
|
-
- lib/listen/listener.rb
|
89
|
-
- lib/listen/
|
90
|
-
- lib/listen/
|
91
|
-
- lib/listen/
|
92
|
-
- lib/listen/
|
93
|
-
- lib/listen/record.rb
|
94
|
-
- lib/listen/record/
|
95
|
-
- lib/listen/
|
96
|
-
- lib/listen/silencer.rb
|
97
|
-
- lib/listen/
|
98
|
-
- lib/listen/version.rb
|
78
|
+
- lib/sass-listen.rb
|
79
|
+
- lib/sass-listen/adapter.rb
|
80
|
+
- lib/sass-listen/adapter/base.rb
|
81
|
+
- lib/sass-listen/adapter/bsd.rb
|
82
|
+
- lib/sass-listen/adapter/config.rb
|
83
|
+
- lib/sass-listen/adapter/darwin.rb
|
84
|
+
- lib/sass-listen/adapter/linux.rb
|
85
|
+
- lib/sass-listen/adapter/polling.rb
|
86
|
+
- lib/sass-listen/adapter/windows.rb
|
87
|
+
- lib/sass-listen/backend.rb
|
88
|
+
- lib/sass-listen/change.rb
|
89
|
+
- lib/sass-listen/cli.rb
|
90
|
+
- lib/sass-listen/directory.rb
|
91
|
+
- lib/sass-listen/event/config.rb
|
92
|
+
- lib/sass-listen/event/loop.rb
|
93
|
+
- lib/sass-listen/event/processor.rb
|
94
|
+
- lib/sass-listen/event/queue.rb
|
95
|
+
- lib/sass-listen/file.rb
|
96
|
+
- lib/sass-listen/fsm.rb
|
97
|
+
- lib/sass-listen/internals/thread_pool.rb
|
98
|
+
- lib/sass-listen/listener.rb
|
99
|
+
- lib/sass-listen/listener/config.rb
|
100
|
+
- lib/sass-listen/logger.rb
|
101
|
+
- lib/sass-listen/options.rb
|
102
|
+
- lib/sass-listen/queue_optimizer.rb
|
103
|
+
- lib/sass-listen/record.rb
|
104
|
+
- lib/sass-listen/record/entry.rb
|
105
|
+
- lib/sass-listen/record/symlink_detector.rb
|
106
|
+
- lib/sass-listen/silencer.rb
|
107
|
+
- lib/sass-listen/silencer/controller.rb
|
108
|
+
- lib/sass-listen/version.rb
|
99
109
|
homepage: https://github.com/sass/listen
|
100
110
|
licenses:
|
101
111
|
- MIT
|
@@ -116,9 +126,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
116
126
|
version: '0'
|
117
127
|
requirements: []
|
118
128
|
rubyforge_project:
|
119
|
-
rubygems_version: 2.
|
129
|
+
rubygems_version: 2.6.11
|
120
130
|
signing_key:
|
121
131
|
specification_version: 4
|
122
132
|
summary: Fork of guard/listen
|
123
133
|
test_files: []
|
124
|
-
has_rdoc:
|
data/bin/listen
DELETED
data/lib/listen/version.rb
DELETED