From 452d4eb719c5067f0bae497dc870554cd300758f Mon Sep 17 00:00:00 2001 From: Folke Lemaitre Date: Mon, 6 Feb 2023 09:16:49 +0100 Subject: [PATCH] fix(process): allow overriding GIT_SSH_COMMAND. Fixes #491. Fixes #492 --- lua/lazy/manage/process.lua | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/lua/lazy/manage/process.lua b/lua/lazy/manage/process.lua index 2ddcff1..fd5f898 100644 --- a/lua/lazy/manage/process.lua +++ b/lua/lazy/manage/process.lua @@ -49,7 +49,7 @@ local uv = vim.loop ---@field on_line? fun(string) ---@field on_exit? fun(ok:boolean, output:string) ---@field timeout? number ----@field env? string[] +---@field env? table ---@param opts? ProcessOpts ---@param cmd string @@ -57,20 +57,15 @@ function M.spawn(cmd, opts) opts = opts or {} opts.timeout = opts.timeout or (Config.options.git and Config.options.git.timeout * 1000) - local env = { - "GIT_TERMINAL_PROMPT=0", - "GIT_SSH_COMMAND=ssh -oBatchMode=yes", - } - if opts.env then - vim.list_extend(env, opts.env) - end + local env = vim.tbl_extend("force", { + GIT_SSH_COMMAND = "ssh -oBatchMode=yes", + }, uv.os_environ(), opts.env or {}) + env.GIT_DIR = nil + env.GIT_TERMINAL_PROMPT = "0" - for key, value in - pairs(uv.os_environ() --[[@as string[] ]]) - do - if key ~= "GIT_DIR" then - table.insert(env, key .. "=" .. value) - end + local env_flat = {} + for k, v in pairs(env) do + env_flat[#env_flat + 1] = k .. "=" .. v end local stdout = uv.new_pipe() @@ -95,7 +90,7 @@ function M.spawn(cmd, opts) stdio = { nil, stdout, stderr }, args = opts.args, cwd = opts.cwd, - env = env, + env = env_flat, }, function(exit_code, signal) M.running[handle] = nil if timeout then