def check_files(files)
files_before = @file_info.keys
used_files = {}
files.each do |file|
begin
if @file_info[file]
if @file_info[file].timestamp != File.mtime(file)
@file_info[file].timestamp = File.mtime(file)
digest = calc_digest(file)
if @file_info[file].digest != digest
@file_info[file].digest = digest
@file_changed && @file_changed.call(file)
end
end
else
@file_info[file] = FileInfo.new
@file_info[file].timestamp = File.mtime(file)
@file_info[file].digest = calc_digest(file)
@file_added && @file_added.call(file)
end
used_files[file] = true
rescue Errno::ENOENT
end
end
files_before.each do |file|
if !used_files[file]
@file_info.delete(file)
@file_removed && @file_removed.call(file)
end
end
end