Sha256: 9fbd4d858965e4b9ee7246cd2dd407c854b84c1dc5d99b6148b503dfd1919285

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

require 'fde/file_crawler/version'

module FDE

  module FileCrawler
    class NoCopyTargetDefined < StandardError; end

    class Config
      attr_accessor :path_in_directory, :path_out_directory
    end


    def self.config
      @@config ||= Config.new
    end

    def self.configure
      yield self.config
    end

    def self.watch(query = /.*\.*/i, &block)
      self.crawl(query).each do |file|
        yield file
      end
    end

    def self.crawl(query = /.*\.*/i)
      path = self.config.path_in_directory
      files = Dir.entries(path)
      files -=  %w[. ..]
      files.select { |file| query.match(file) }
    end

    def self.copy(file, target = nil)
      if self.config.path_out_directory && target.nil?
        FileUtils.copy(path_for(file), self.config.path_out_directory)
      elsif target.nil?
        raise NoCopyTargetDefined
      else
        FileUtils.copy(path_for(file), target)
      end
    end

    def self.delete(file)
      FileUtils.rm(path_for(file))
    end

    def self.move(file, target)
      FileUtils.mv(path_for(file), target)
    end

    def self.path_for(file)
      "#{self.config.path_in_directory}#{file}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fde-file_crawler-0.6.0 lib/fde/file_crawler.rb