Sha256: fb515f96e5015a75234fda707fca3cb2a48cdb8539dd44631c82e441e9114480

Contents?: true

Size: 1.22 KB

Versions: 2

Compression:

Stored size: 1.22 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

    # TODO: remove conditional
    def self.watch(query = nil, &block)
      unless query.nil?
        yield self.crawl(query)
      else
        yield self.crawl
      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

2 entries across 2 versions & 1 rubygems

Version Path
fde-file_crawler-0.5.1 lib/fde/file_crawler.rb
fde-file_crawler-0.5.0 lib/fde/file_crawler.rb