class FileScanner::Worker

Constants

ALL
ANY

Attributes

filters[R]
path[R]

Public Class Methods

new(path:, filters: Filters::defaults, all: false, filecheck: false, logger: Logger.new(nil)) click to toggle source
# File lib/file_scanner/worker.rb, line 12
def initialize(path:, 
               filters: Filters::defaults, 
               all: false, 
               filecheck: false,
               logger: Logger.new(nil))
  @path = File.expand_path(path) << File::SEPARATOR
  @filters = filters
  @mode = mode(all)
  @filecheck = filecheck
  @logger = logger
end

Public Instance Methods

call() click to toggle source
# File lib/file_scanner/worker.rb, line 24
def call
  @logger.info { "scanning \e[1m#{@path}\e[0m..." }
  @logger.debug { "skipping directories" } if @filecheck
  @logger.debug { "applying \e[36m#{@filters.size}\e[0m filters by \e[35m#{@mode}\e[0m" }
  paths.lazy.select { |file| valid?(file) && filter(file) }
rescue StandardError => e
  @logger.error { e.message }
  raise e
end

Private Instance Methods

filter(file) click to toggle source
# File lib/file_scanner/worker.rb, line 43
        def filter(file)
  @filters.send(@mode) do |filter|
    @logger.debug { "filtering \e[37m#{File.basename(file)}\e[0m" }
    filter.call(file)
  end
end
mode(all) click to toggle source
# File lib/file_scanner/worker.rb, line 34
        def mode(all)
  all ? ALL : ANY
end
paths() click to toggle source
# File lib/file_scanner/worker.rb, line 50
        def paths
  Find.find(@path)
end
valid?(file) click to toggle source
# File lib/file_scanner/worker.rb, line 38
        def valid?(file)
  return true unless @filecheck
  FileTest.file?(file)
end