diff --git a/lua/avante/providers/init.lua b/lua/avante/providers/init.lua index e4be593..f2a9770 100644 --- a/lua/avante/providers/init.lua +++ b/lua/avante/providers/init.lua @@ -111,6 +111,7 @@ E.parse_envvar = function(Opts) local key = nil + vim.g.avante_login = false if cmd ~= nil then -- NOTE: in case api_key_name is cmd, and users still set envvar -- We will try to get envvar first @@ -120,11 +121,11 @@ E.parse_envvar = function(Opts) ---@diagnostic disable: no-unknown E.cache[Opts._shellenv] = key E.cache[api_key_name] = key + vim.g.avante_login = true return key end end - vim.g.avante_login = false local exit_codes = { 0 } local ok, job_or_err = pcall( vim.system, diff --git a/lua/avante/utils.lua b/lua/avante/utils.lua index f110ec2..3de277b 100644 --- a/lua/avante/utils.lua +++ b/lua/avante/utils.lua @@ -41,9 +41,13 @@ M.get_os_name = function() end end +--- This function will run given shell command synchronously. ---@param input_cmd string +---@return integer, string?, string? M.shell_run = function(input_cmd) - local output = vim.system(vim.split(cmd, " ", { trimempty = true }), { text = true }) + local output = + vim.system(vim.split("sh -c " .. vim.fn.shellescape(input_cmd), " ", { trimempty = true }), { text = true }):wait() + return output.code, output.stderr, output.stdout end ---@alias _ToggleSet fun(state: boolean): nil