Sha256: 21ad178ce622c023cd7d79a36ab7be4ec399f9a9231c827f4b1ecb49fb7f54be
Contents?: true
Size: 1.16 KB
Versions: 3
Compression:
Stored size: 1.16 KB
Contents
require 'yaml' class FSSM::State def initialize(path) @path = path @cache = FSSM::Tree::Cache.new end def refresh(base=nil, skip_callbacks=false) previous, current = recache(base || @path.to_pathname) unless skip_callbacks deleted(previous, current) created(previous, current) modified(previous, current) end end private def created(previous, current) (current.keys - previous.keys).each {|created| @path.create(created)} end def deleted(previous, current) (previous.keys - current.keys).each {|deleted| @path.delete(deleted)} end def modified(previous, current) (current.keys & previous.keys).each do |file| @path.update(file) if (current[file] <=> previous[file]) != 0 end end def recache(base) base = FSSM::Pathname.for(base) previous = @cache.files snapshot(base) current = @cache.files [previous, current] end def snapshot(base) base = FSSM::Pathname.for(base) @cache.unset(base) @path.glob.each {|glob| add_glob(base, glob)} end def add_glob(base, glob) FSSM::Pathname.glob(base.join(glob)).each do |fn| @cache.set(fn) end end end
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
ttilley-fssm-0.0.7 | lib/fssm/state.rb |
ttilley-fssm-0.0.8 | lib/fssm/state.rb |
fssm-0.0.8 | lib/fssm/state.rb |