aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2021-10-01 22:47:59 +0200
committerGitHub <noreply@github.com>2021-10-01 22:47:59 +0200
commit8212fc21b6a3c0000b1a5fb4c056c189c6fca212 (patch)
tree227a5b8291b6f22184ab4bcf5e18448802c6d296
parentstylua and some cleanup (diff)
downloadmason-8212fc21b6a3c0000b1a5fb4c056c189c6fca212.tar
mason-8212fc21b6a3c0000b1a5fb4c056c189c6fca212.tar.gz
mason-8212fc21b6a3c0000b1a5fb4c056c189c6fca212.tar.bz2
mason-8212fc21b6a3c0000b1a5fb4c056c189c6fca212.tar.lz
mason-8212fc21b6a3c0000b1a5fb4c056c189c6fca212.tar.xz
mason-8212fc21b6a3c0000b1a5fb4c056c189c6fca212.tar.zst
mason-8212fc21b6a3c0000b1a5fb4c056c189c6fca212.zip
fix newlines in stdout/stderr calls, more robust error handling (#114)
-rw-r--r--lua/nvim-lsp-installer/installers/context.lua4
-rw-r--r--lua/nvim-lsp-installer/installers/init.lua8
-rw-r--r--lua/nvim-lsp-installer/installers/std.lua2
-rw-r--r--lua/nvim-lsp-installer/installers/zx.lua6
-rw-r--r--lua/nvim-lsp-installer/process.lua2
-rw-r--r--lua/nvim-lsp-installer/server.lua11
-rw-r--r--lua/nvim-lsp-installer/ui/status-win/init.lua4
7 files changed, 24 insertions, 13 deletions
diff --git a/lua/nvim-lsp-installer/installers/context.lua b/lua/nvim-lsp-installer/installers/context.lua
index fba6683e..2f56e25c 100644
--- a/lua/nvim-lsp-installer/installers/context.lua
+++ b/lua/nvim-lsp-installer/installers/context.lua
@@ -52,12 +52,12 @@ function M.github_release_file(repo, file)
context.github_release_file = get_download_url(context.requested_server_version)
callback(true)
else
- context.stdio_sink.stdout "Fetching latest release version from GitHub API..."
+ context.stdio_sink.stdout "Fetching latest release version from GitHub API...\n"
fetch(
("https://api.github.com/repos/%s/releases/latest"):format(repo),
vim.schedule_wrap(function(err, response)
if err then
- context.stdio_sink.stderr "Failed to fetch latest release version from GitHub API."
+ context.stdio_sink.stderr "Failed to fetch latest release version from GitHub API.\n"
return callback(false)
else
local version = Data.json_decode(response).tag_name
diff --git a/lua/nvim-lsp-installer/installers/init.lua b/lua/nvim-lsp-installer/installers/init.lua
index 828eba7d..0dd48972 100644
--- a/lua/nvim-lsp-installer/installers/init.lua
+++ b/lua/nvim-lsp-installer/installers/init.lua
@@ -10,7 +10,7 @@ function M.pipe(installers)
return function(server, callback, context)
local function execute(idx)
- installers[idx](server, function(success)
+ local ok, err = pcall(installers[idx], server, function(success)
if not success then
-- oh no, error. exit early
callback(success)
@@ -22,6 +22,10 @@ function M.pipe(installers)
callback(success)
end
end, context)
+ if not ok then
+ context.stdio_sink.stderr(tostring(err) .. "\n")
+ callback(false)
+ end
end
execute(1)
@@ -75,7 +79,7 @@ function M.when(platform_table)
installer(server, callback, context)
else
context.stdio_sink.stderr(
- ("Current operating system is not yet supported for server %q."):format(server.name)
+ ("Current operating system is not yet supported for server %q.\n"):format(server.name)
)
callback(false)
end
diff --git a/lua/nvim-lsp-installer/installers/std.lua b/lua/nvim-lsp-installer/installers/std.lua
index 92957fb7..edf312b2 100644
--- a/lua/nvim-lsp-installer/installers/std.lua
+++ b/lua/nvim-lsp-installer/installers/std.lua
@@ -130,7 +130,7 @@ function M.ensure_executables(executables)
local executable = entry[1]
local error_msg = entry[2]
if vim.fn.executable(executable) ~= 1 then
- context.stdio_sink.stderr(error_msg)
+ context.stdio_sink.stderr(error_msg .. "\n")
callback(false)
return
end
diff --git a/lua/nvim-lsp-installer/installers/zx.lua b/lua/nvim-lsp-installer/installers/zx.lua
index 85392e2c..067abfd0 100644
--- a/lua/nvim-lsp-installer/installers/zx.lua
+++ b/lua/nvim-lsp-installer/installers/zx.lua
@@ -30,7 +30,7 @@ local function zx_installer(force)
local npm_command = is_zx_already_installed and "update" or "install"
if not is_zx_already_installed then
- context.stdio_sink.stdout(("Preparing for installation… (npm %s zx)"):format(npm_command))
+ context.stdio_sink.stdout(("Preparing for installation… (npm %s zx)\n"):format(npm_command))
end
fs.mkdirp(INSTALL_DIR)
@@ -44,13 +44,13 @@ local function zx_installer(force)
has_installed_zx = true
callback(true)
else
- context.stdio_sink.stderr "Failed to install zx."
+ context.stdio_sink.stderr "Failed to install zx.\n"
callback(false)
end
end)
if handle == nil then
- context.stdio_sink.stderr(("Failed to install/update zx. %s"):format(pid))
+ context.stdio_sink.stderr(("Failed to install/update zx. %s\n"):format(pid))
callback(false)
end
end
diff --git a/lua/nvim-lsp-installer/process.lua b/lua/nvim-lsp-installer/process.lua
index 9c6a8c50..fc055061 100644
--- a/lua/nvim-lsp-installer/process.lua
+++ b/lua/nvim-lsp-installer/process.lua
@@ -83,7 +83,7 @@ function M.spawn(cmd, opts, callback)
if handle == nil then
log.error("Failed to spawn process", cmd, pid)
- opts.stdio_sink.stderr(("Failed to spawn process cmd=%s pid=%s"):format(cmd, pid))
+ opts.stdio_sink.stderr(("Failed to spawn process cmd=%s pid=%s\n"):format(cmd, pid))
callback(false)
return nil, nil
end
diff --git a/lua/nvim-lsp-installer/server.lua b/lua/nvim-lsp-installer/server.lua
index a6299136..4c9bef52 100644
--- a/lua/nvim-lsp-installer/server.lua
+++ b/lua/nvim-lsp-installer/server.lua
@@ -79,8 +79,15 @@ function M.Server:install()
end
function M.Server:install_attached(context, callback)
- self:uninstall()
+ local uninstall_ok, uninstall_err = pcall(self.uninstall, self)
+ if not uninstall_ok then
+ context.stdio_sink.stderr(tostring(uninstall_err) .. "\n")
+ callback(false)
+ return
+ end
+
self:create_root_dir()
+
local install_ok, install_err = pcall(self._installer, self, function(success)
if not success then
vim.schedule(function()
@@ -94,7 +101,7 @@ function M.Server:install_attached(context, callback)
callback(success)
end, context)
if not install_ok then
- context.stdio_sink.stderr(tostring(install_err))
+ context.stdio_sink.stderr(tostring(install_err) .. "\n")
callback(false)
end
end
diff --git a/lua/nvim-lsp-installer/ui/status-win/init.lua b/lua/nvim-lsp-installer/ui/status-win/init.lua
index 211723ef..143dcba8 100644
--- a/lua/nvim-lsp-installer/ui/status-win/init.lua
+++ b/lua/nvim-lsp-installer/ui/status-win/init.lua
@@ -227,7 +227,7 @@ local function create_server_state(server)
is_queued = false,
is_running = false,
has_run = false,
- tailed_output = {},
+ tailed_output = { "" },
},
uninstaller = { has_run = false, error = nil },
}
@@ -235,7 +235,7 @@ end
local function normalize_chunks_line_endings(chunk, dest)
local chunk_lines = vim.split(chunk, "\n")
- dest[#dest] = (dest[#dest] or "") .. chunk_lines[1]
+ dest[#dest] = dest[#dest] .. chunk_lines[1]
for i = 2, #chunk_lines do
dest[#dest + 1] = chunk_lines[i]
end