class RuboCop::ConfigFinder

@api private
This class has methods related to finding configuration path.

def expand_path(path)

def expand_path(path)
  File.expand_path(path)
rescue ArgumentError
  # Could happen because HOME or ID could not be determined. Fall back on
  # using the path literally in that case.
  path
end

def find_config_path(target_dir)

def find_config_path(target_dir)
  find_project_dotfile(target_dir) || find_user_dotfile || find_user_xdg_config ||
    DEFAULT_FILE
end

def find_project_dotfile(target_dir)

def find_project_dotfile(target_dir)
  find_file_upwards(DOTFILE, target_dir, project_root)
end

def find_project_root

def find_project_root
  pwd = Dir.pwd
  gems_file = find_last_file_upwards('Gemfile', pwd) || find_last_file_upwards('gems.rb', pwd)
  return unless gems_file
  File.dirname(gems_file)
end

def find_user_dotfile

def find_user_dotfile
  return unless ENV.key?('HOME')
  file = File.join(Dir.home, DOTFILE)
  return file if File.exist?(file)
end

def find_user_xdg_config

def find_user_xdg_config
  xdg_config_home = expand_path(ENV.fetch('XDG_CONFIG_HOME', '~/.config'))
  xdg_config = File.join(xdg_config_home, 'rubocop', XDG_CONFIG)
  return xdg_config if File.exist?(xdg_config)
end

def project_root

searches will go past this directory.
Returns the path RuboCop inferred as the root of the project. No file
def project_root
  @project_root ||= find_project_root
end