Sha256: 3b450868b157b935cfa80cc6e6930b2d6f065ae91207e55ef0a5cc855b0b6af1

Contents?: true

Size: 906 Bytes

Versions: 60

Compression:

Stored size: 906 Bytes

Contents

# frozen_string_literal: true

require 'pathname'

module RuboCop
  # Common methods for finding files.
  module FileFinder
    def self.root_level=(level)
      @root_level = level
    end

    def self.root_level?(path)
      @root_level == path.to_s
    end

    def find_file_upwards(filename, start_dir)
      traverse_files_upwards(filename, start_dir) do |file|
        # minimize iteration for performance
        return file if file
      end
    end

    def find_files_upwards(filename, start_dir)
      files = []
      traverse_files_upwards(filename, start_dir) do |file|
        files << file
      end
      files
    end

    private

    def traverse_files_upwards(filename, start_dir)
      Pathname.new(start_dir).expand_path.ascend do |dir|
        break if FileFinder.root_level?(dir)

        file = dir + filename
        yield(file.to_s) if file.exist?
      end
    end
  end
end

Version data entries

60 entries across 41 versions & 5 rubygems

Version Path
grape-extra_validators-2.0.0 vendor/bundle/ruby/2.6.0/gems/rubocop-0.79.0/lib/rubocop/file_finder.rb
rubocop-0.87.1 lib/rubocop/file_finder.rb
rubocop-0.87.0 lib/rubocop/file_finder.rb
rubocop-0.86.0 lib/rubocop/file_finder.rb
files.com-1.0.1 vendor/bundle/ruby/2.5.0/gems/rubocop-0.85.1/lib/rubocop/file_finder.rb
rbhint-0.85.1.rc2 lib/rubocop/file_finder.rb
rbhint-0.85.1.rc1 lib/rubocop/file_finder.rb
rubocop-0.85.1 lib/rubocop/file_finder.rb
rbhint-0.8.5.rc1 lib/rubocop/file_finder.rb
rubocop-0.85.0 lib/rubocop/file_finder.rb
rubocop-0.84.0 lib/rubocop/file_finder.rb
rubocop-0.83.0 lib/rubocop/file_finder.rb
rubocop-0.82.0 lib/rubocop/file_finder.rb
rubocop-0.81.0 lib/rubocop/file_finder.rb
rubocop-0.80.1 lib/rubocop/file_finder.rb
rubocop-0.80.0 lib/rubocop/file_finder.rb
grape-extra_validators-1.0.0 vendor/bundle/ruby/2.4.0/gems/rubocop-0.79.0/lib/rubocop/file_finder.rb
grape-extra_validators-1.0.0 vendor/bundle/ruby/2.6.0/gems/rubocop-0.79.0/lib/rubocop/file_finder.rb
rubocop-0.79.0 lib/rubocop/file_finder.rb
rubocop-0.78.0 lib/rubocop/file_finder.rb