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
Returns the path RuboCop inferred as the root of the project. No file
def project_root @project_root ||= find_project_root end