module RuboCop::FileFinder

Common methods for finding files. @api private

Attributes

root_level[RW]

Public Instance Methods

find_file_upwards(filename, start_dir, stop_dir = nil) click to toggle source
# File lib/rubocop/file_finder.rb, line 13
def find_file_upwards(filename, start_dir, stop_dir = nil)
  traverse_files_upwards(filename, start_dir, stop_dir) do |file|
    # minimize iteration for performance
    return file if file
  end
end
find_last_file_upwards(filename, start_dir, stop_dir = nil) click to toggle source
# File lib/rubocop/file_finder.rb, line 20
def find_last_file_upwards(filename, start_dir, stop_dir = nil)
  last_file = nil
  traverse_files_upwards(filename, start_dir, stop_dir) { |file| last_file = file }
  last_file
end
traverse_directories_upwards(start_dir, stop_dir = nil) { |dir| ... } click to toggle source
# File lib/rubocop/file_finder.rb, line 26
def traverse_directories_upwards(start_dir, stop_dir = nil)
  Pathname.new(start_dir).expand_path.ascend do |dir|
    yield(dir)
    dir = dir.to_s
    break if dir == stop_dir || dir == FileFinder.root_level
  end
end

Private Instance Methods

traverse_files_upwards(filename, start_dir, stop_dir) { |file| ... } click to toggle source
# File lib/rubocop/file_finder.rb, line 36
def traverse_files_upwards(filename, start_dir, stop_dir)
  traverse_directories_upwards(start_dir, stop_dir) do |dir|
    file = dir + filename
    yield(file.to_s) if file.exist?
  end
end