lib/cc/engine/file_list_resolver.rb (40 lines of code) (raw):
# frozen_string_literal: true
module CC
module Engine
class FileListResolver
def initialize(root:, engine_config: {}, config_store:)
@root = root
@include_paths = engine_config["include_paths"] || ["./"]
@config_store = config_store
end
def expanded_list
absolute_include_paths.flat_map do |path|
if Dir.exist?(path)
rubocop_runner.send(:find_target_files, [path])
elsif rubocop_file_to_include?(path)
path
end
end.compact
end
private
attr_reader :config_store
def absolute_include_paths
@include_paths.map do |path|
begin
Pathname.new(path).realpath.to_s
rescue Errno::ENOENT
nil
end
end.compact
end
def rubocop_file_to_include?(file)
root, basename = File.split(file)
store = config_store.for(root)
return false if store.file_to_exclude?(basename)
file =~ /\.rb$/ || store.file_to_include?(basename)
end
def rubocop_runner
@rubocop_runner ||= RuboCop::Runner.new({}, @config_store)
end
end
end
end