Sha256: dc822bc94e99e90efbfc79291dbbbb72f20cd0e36e88923e93d44417b4920c6a

Contents?: true

Size: 1.26 KB

Versions: 5

Compression:

Stored size: 1.26 KB

Contents

require 'rbconfig'

module Guard
  
  autoload :Darwin,  'guard/listeners/darwin'
  autoload :Linux,   'guard/listeners/linux'
  autoload :Polling, 'guard/listeners/polling'
  
  class Listener
    attr_reader :last_event
    
    def self.init
      if mac? && Darwin.usable?
        Darwin.new
      elsif linux? && Linux.usable?
        Linux.new
      else
        UI.info "Using polling (Please help us to support your system better than that.)"
        Polling.new
      end
    end
    
    def initialize
      update_last_event
    end
    
  private
    
    def modified_files(dirs, options = {})
      files = potentially_modified_files(dirs, options).select { |path| File.file?(path) && recent_file?(path) }
      files.map! { |file| file.gsub("#{Dir.pwd}/", '') }
    end
    
    def potentially_modified_files(dirs, options = {})
      match = options[:all] ? "**/*" : "*"
      Dir.glob(dirs.map { |dir| "#{dir}#{match}" })
    end
    
    def recent_file?(file)
      File.mtime(file) >= last_event
    rescue
      false
    end
    
    def update_last_event
      @last_event = Time.now
    end
    
    def self.mac?
      Config::CONFIG['target_os'] =~ /darwin/i
    end
    
    def self.linux?
      Config::CONFIG['target_os'] =~ /linux/i
    end
    
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
arcabouco-0.2.13 vendor/bundle/gems/guard-0.2.2/lib/guard/listener.rb
guard-0.2.2 lib/guard/listener.rb
guard-0.2.1 lib/guard/listener.rb
guard-0.2.0 lib/guard/listener.rb
guard-0.2.0.beta.1 lib/guard/listener.rb