diff options
| author | William Boman <william@redwill.se> | 2021-10-01 22:47:59 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-01 22:47:59 +0200 |
| commit | 8212fc21b6a3c0000b1a5fb4c056c189c6fca212 (patch) | |
| tree | 227a5b8291b6f22184ab4bcf5e18448802c6d296 | |
| parent | stylua and some cleanup (diff) | |
| download | mason-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.lua | 4 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/installers/init.lua | 8 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/installers/std.lua | 2 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/installers/zx.lua | 6 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/process.lua | 2 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/server.lua | 11 | ||||
| -rw-r--r-- | lua/nvim-lsp-installer/ui/status-win/init.lua | 4 |
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 |
