fix: try to find the config file better

This commit is contained in:
2024-12-12 20:49:05 +01:00
parent d51742459c
commit e7e20500ec

View File

@@ -1,6 +1,7 @@
-- lua/chatgpt_nvim/config.lua
-- Modified to load the config file from the git root of the currently opened file
-- If not in a git repository, fallback to current working directory
-- Modified to:
-- 1) Determine the Git root based on the currently opened file.
-- 2) If no file is open or not in Git repo, fallback to current working directory.
local M = {}
local uv = vim.loop
@@ -8,19 +9,40 @@ local uv = vim.loop
local ok_yaml, lyaml = pcall(require, "lyaml")
local function get_project_root()
-- Attempt to find git root
local git_root = vim.fn.systemlist('git rev-parse --show-toplevel')
-- Get the directory of the currently opened file.
-- If no file is open, we fallback to current working directory.
local current_file = vim.fn.expand("%:p")
local root_dir
if current_file == "" then
-- No file opened, fallback to cwd
root_dir = vim.fn.getcwd()
else
-- Extract directory from current file path
local file_dir = current_file:match("(.*)/")
if not file_dir then
-- If something went wrong extracting the directory, fallback to cwd
root_dir = vim.fn.getcwd()
else
-- Attempt to find git root from the file's directory
-- We run git rev-parse with `cd` to the file's directory.
local cmd = string.format("cd %s && git rev-parse --show-toplevel 2>/dev/null", vim.fn.shellescape(file_dir))
local git_root = vim.fn.systemlist(cmd)
if vim.v.shell_error == 0 and git_root and #git_root > 0 then
return git_root[1]
root_dir = git_root[1]
else
-- Not a git repo or failed to find git root, fallback to the file's directory
root_dir = file_dir
end
-- Fallback to current working directory if git root not found
return vim.fn.getcwd()
end
end
return root_dir
end
local function get_config_path()
local root = get_project_root()
local config_path = root .. "/.chatgpt_config.yaml"
return config_path
return root .. "/.chatgpt_config.yaml"
end
function M.load()