def add(*items)
debug { "watcher: add: #{items.inspect}" }
items = items.flatten.map do |item|
item = Pathname.new(item)
if item.relative?
Pathname.new("#{root}/#{item}")
else
item
end
end
items = items.select do |item|
if item.symlink?
item.readlink.exist?.tap do |exists|
if !exists
debug { "add: ignoring dangling symlink: #{item.inspect} -> #{item.readlink.inspect}" }
end
end
else
item.exist?
end
end
synchronize {
items.each do |item|
if item.directory?
directories << item.realpath.to_s
else
begin
files << item.realpath.to_s
rescue Errno::ENOENT
debug { "add: ignoring now-dangling symlink: #{item.inspect} -> #{item.readlink.inspect}" }
end
end
end
subjects_changed
}
end