aboutsummaryrefslogtreecommitdiffstats
path: root/lua/nvim-lsp-installer/process.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2021-10-04 16:17:11 +0200
committerWilliam Boman <william@redwill.se>2021-10-04 16:17:11 +0200
commit86d4313c6ce9b5b32b4c0df30ff4896982c51ba7 (patch)
treea72c7dc3b3c2b31ce02a50f24b841afdc770c9af /lua/nvim-lsp-installer/process.lua
parentadd emmet_ls (#122) (diff)
downloadmason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.tar
mason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.tar.gz
mason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.tar.bz2
mason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.tar.lz
mason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.tar.xz
mason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.tar.zst
mason-86d4313c6ce9b5b32b4c0df30ff4896982c51ba7.zip
sanitize env in debug logs
Diffstat (limited to 'lua/nvim-lsp-installer/process.lua')
-rw-r--r--lua/nvim-lsp-installer/process.lua34
1 files changed, 32 insertions, 2 deletions
diff --git a/lua/nvim-lsp-installer/process.lua b/lua/nvim-lsp-installer/process.lua
index fc055061..8ee90c96 100644
--- a/lua/nvim-lsp-installer/process.lua
+++ b/lua/nvim-lsp-installer/process.lua
@@ -1,7 +1,10 @@
local log = require "nvim-lsp-installer.log"
+local Data = require "nvim-lsp-installer.data"
local platform = require "nvim-lsp-installer.platform"
local uv = vim.loop
+local list_any = Data.list_any
+
local M = {}
local function connect_sink(pipe, sink)
@@ -41,6 +44,30 @@ function M.graft_env(env)
return root_env
end
+local function sanitize_env_list(env_list)
+ local sanitized_list = {}
+ for _, env in ipairs(env_list) do
+ local safe_envs = {
+ "GO111MODULE",
+ "GOBIN",
+ "GOPATH",
+ "PATH",
+ "GEM_HOME",
+ "GEM_PATH",
+ }
+ local is_safe_env = list_any(safe_envs, function(safe_env)
+ return env:find(safe_env .. "=") == 1
+ end)
+ if is_safe_env then
+ sanitized_list[#sanitized_list+1] = env
+ else
+ local idx = env:find "="
+ sanitized_list[#sanitized_list+1] = env:sub(1, idx) .. "=<redacted>"
+ end
+ end
+ return sanitized_list
+end
+
function M.spawn(cmd, opts, callback)
local stdin = uv.new_pipe(false)
local stdout = uv.new_pipe(false)
@@ -48,8 +75,6 @@ function M.spawn(cmd, opts, callback)
local stdio = { stdin, stdout, stderr }
- log.debug("Spawning", cmd, opts)
-
local spawn_opts = {
env = opts.env,
stdio = stdio,
@@ -59,6 +84,11 @@ function M.spawn(cmd, opts, callback)
hide = true,
}
+ log.lazy_debug(function()
+ local sanitized_env = sanitize_env_list(opts.env)
+ return "Spawning cmd=%s, args=%s, cwd=%s, env=%s", cmd, opts.args, opts.cwd, sanitized_env
+ end)
+
local handle, pid
handle, pid = uv.spawn(cmd, spawn_opts, function(exit_code, signal)
local successful = exit_code == 0 and signal == 0