fix: try to find the config file better
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user