# frozen_string_literal: true module StrictTodo class FindFile private_class_method :new class << self # # @param [StrictTodo::Config] config YamlロードされHash化されたConfig情報 # @param [String] base_dir 起点となるディレクトリ # # @return [Array<String>] ファイルのパス情報 # def perform(config:, base_dir:) results = [] Dir.glob('**/*', File::FNM_DOTMATCH, base: base_dir) do |path| # ディレクトリならば更に再起探索を行う if File.directory?(path) next end if acceptable?(dir_path: path, config: config) results.push(path) end end results end private # # @param [String] dir_path ディレクトリパス # @param [StrictTodo::Config] config YamlロードされHash化されたConfig情報 # def acceptable?(dir_path:, config:) return false if not config.permit_extensions.include?(File.extname(dir_path)) return false if config.exclude_match.include?(dir_path.split("/").first) true end end end end