module Pronto::GolangSupport::FileFinder
Public Class Methods
root_level=(level)
click to toggle source
# File lib/pronto/golang/file_finder.rb, line 6 def self.root_level=(level) @root_level = level end
root_level?(path)
click to toggle source
# File lib/pronto/golang/file_finder.rb, line 10 def self.root_level?(path) @root_level == path.to_s end
Public Instance Methods
find_file_upwards(filename, start_dir, use_home: false)
click to toggle source
# File lib/pronto/golang/file_finder.rb, line 14 def find_file_upwards(filename, start_dir, use_home: false) traverse_files_upwards(filename, start_dir, use_home) do |file| # minimize iteration for performance return file if file end end
find_files_upwards(filename, start_dir, use_home: false)
click to toggle source
# File lib/pronto/golang/file_finder.rb, line 21 def find_files_upwards(filename, start_dir, use_home: false) files = [] traverse_files_upwards(filename, start_dir, use_home) do |file| files << file end files end
Private Instance Methods
traverse_files_upwards(filename, start_dir, use_home) { |file| ... }
click to toggle source
# File lib/pronto/golang/file_finder.rb, line 31 def traverse_files_upwards(filename, start_dir, use_home) 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 return unless use_home && ENV.key?('HOME') file = File.join(Dir.home, filename) yield(file) if File.exist?(file) end