Sha256: 398006f0f7611bee86f19f64dfff47ff23793cf31f1fc68ce52108d17353918f

Contents?: true

Size: 1.28 KB

Versions: 327

Compression:

Stored size: 1.28 KB

Contents

module FSSM::State
  class Directory
    attr_reader :path

    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).to_s).each do |fn|
        @cache.set(fn)
      end
    end

  end
end

Version data entries

327 entries across 327 versions & 7 rubygems

Version Path
sass-3.1.0.alpha.21 vendor/fssm/lib/fssm/state/directory.rb
haml-3.1.0.alpha.23 vendor/sass/vendor/fssm/lib/fssm/state/directory.rb
sass-3.1.0.alpha.20 vendor/fssm/lib/fssm/state/directory.rb
haml-3.1.0.alpha.22 vendor/sass/vendor/fssm/lib/fssm/state/directory.rb
sass-3.1.0.alpha.19 vendor/fssm/lib/fssm/state/directory.rb
haml-3.0.22 vendor/fssm/lib/fssm/state/directory.rb
sass-3.1.0.alpha.18 vendor/fssm/lib/fssm/state/directory.rb
haml-3.1.0.alpha.19 vendor/sass/vendor/fssm/lib/fssm/state/directory.rb
haml-3.1.0.alpha.18 vendor/sass/vendor/fssm/lib/fssm/state/directory.rb
haml-3.1.0.alpha.17 vendor/sass/vendor/fssm/lib/fssm/state/directory.rb
compass-0.10.6.pre.1 lib/vendor/fssm/fssm/state/directory.rb
sass-3.1.0.alpha.17 vendor/fssm/lib/fssm/state/directory.rb
sass-3.1.0.alpha.16 vendor/fssm/lib/fssm/state/directory.rb
sass-3.1.0.alpha.15 vendor/fssm/lib/fssm/state/directory.rb
sass-3.1.0.alpha.14 vendor/fssm/lib/fssm/state/directory.rb
sass-3.1.0.alpha.13 vendor/fssm/lib/fssm/state/directory.rb
sass-3.1.0.alpha.12 vendor/fssm/lib/fssm/state/directory.rb
sass-3.1.0.alpha.11 vendor/fssm/lib/fssm/state/directory.rb
sass-3.1.0.alpha.10 vendor/fssm/lib/fssm/state/directory.rb
haml-3.0.21 vendor/fssm/lib/fssm/state/directory.rb