diff options
| author | William Boman <william@redwill.se> | 2021-10-04 16:17:11 +0200 |
|---|---|---|
| committer | William Boman <william@redwill.se> | 2021-10-04 16:17:11 +0200 |
| commit | 86d4313c6ce9b5b32b4c0df30ff4896982c51ba7 (patch) | |
| tree | a72c7dc3b3c2b31ce02a50f24b841afdc770c9af /lua | |
| parent | add emmet_ls (#122) (diff) | |
| download | mason-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')
| -rw-r--r-- | lua/nvim-lsp-installer/data.lua | 9 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/log.lua | 15 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/process.lua | 34 |
3 files changed, 53 insertions, 5 deletions
diff --git a/lua/nvim-lsp-installer/data.lua b/lua/nvim-lsp-installer/data.lua index 71267ce6..948c53de 100644 --- a/lua/nvim-lsp-installer/data.lua +++ b/lua/nvim-lsp-installer/data.lua @@ -59,6 +59,15 @@ function Data.list_copy(list) return result end +function Data.list_any(list, predicate) + for i = 1, #list do + if predicate(list[i]) then + return true + end + end + return false +end + function Data.json_decode(data) if vim.json and vim.json.decode then return vim.json.decode(data) diff --git a/lua/nvim-lsp-installer/log.lua b/lua/nvim-lsp-installer/log.lua index 54aa00ea..50a1e8a7 100644 --- a/lua/nvim-lsp-installer/log.lua +++ b/lua/nvim-lsp-installer/log.lua @@ -1,5 +1,8 @@ +local Data = require("nvim-lsp-installer.data") local settings = require "nvim-lsp-installer.settings" +local tbl_pack = Data.tbl_pack + local config = { -- Name of the plugin. Prepended to log messages name = "lsp-installer", @@ -128,9 +131,15 @@ do end -- log.lazy_info(expensive_to_calculate) - log[("lazy_%s"):format(x.name)] = function() - return log_at_level(x, function(f) - return f() + log[("lazy_%s"):format(x.name)] = function(f) + return log_at_level(x, function() + local passed = tbl_pack(f()) + local fmt = table.remove(passed, 1) + local inspected = {} + for _, v in ipairs(passed) do + table.insert(inspected, vim.inspect(v)) + end + return string.format(fmt, unpack(inspected)) end) end 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 |
