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 -- lua/chatgpt_nvim/config.lua
-- Modified to load the config file from the git root of the currently opened file -- Modified to:
-- If not in a git repository, fallback to current working directory -- 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 M = {}
local uv = vim.loop local uv = vim.loop
@@ -8,19 +9,40 @@ local uv = vim.loop
local ok_yaml, lyaml = pcall(require, "lyaml") local ok_yaml, lyaml = pcall(require, "lyaml")
local function get_project_root() local function get_project_root()
-- Attempt to find git root -- Get the directory of the currently opened file.
local git_root = vim.fn.systemlist('git rev-parse --show-toplevel') -- 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 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 end
-- Fallback to current working directory if git root not found end
return vim.fn.getcwd() end
return root_dir
end end
local function get_config_path() local function get_config_path()
local root = get_project_root() local root = get_project_root()
local config_path = root .. "/.chatgpt_config.yaml" return root .. "/.chatgpt_config.yaml"
return config_path
end end
function M.load() function M.load()