diff options
| author | William Boman <william@redwill.se> | 2022-03-05 22:42:25 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-05 22:42:25 +0100 |
| commit | f9299bb59c9e42d59fc57ed034fb84bdd23bbd77 (patch) | |
| tree | 0ac6e701d7fa206ce5e05b4daed2238ab1eaf6c0 /lua/nvim-lsp-installer/core/async/spawn.lua | |
| parent | async: raise errors instead of returning pcall-style (#521) (diff) | |
| download | mason-f9299bb59c9e42d59fc57ed034fb84bdd23bbd77.tar mason-f9299bb59c9e42d59fc57ed034fb84bdd23bbd77.tar.gz mason-f9299bb59c9e42d59fc57ed034fb84bdd23bbd77.tar.bz2 mason-f9299bb59c9e42d59fc57ed034fb84bdd23bbd77.tar.lz mason-f9299bb59c9e42d59fc57ed034fb84bdd23bbd77.tar.xz mason-f9299bb59c9e42d59fc57ed034fb84bdd23bbd77.tar.zst mason-f9299bb59c9e42d59fc57ed034fb84bdd23bbd77.zip | |
feat(ui): display installed server version (#520)
Diffstat (limited to 'lua/nvim-lsp-installer/core/async/spawn.lua')
| -rw-r--r-- | lua/nvim-lsp-installer/core/async/spawn.lua | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/lua/nvim-lsp-installer/core/async/spawn.lua b/lua/nvim-lsp-installer/core/async/spawn.lua new file mode 100644 index 00000000..e643f098 --- /dev/null +++ b/lua/nvim-lsp-installer/core/async/spawn.lua @@ -0,0 +1,36 @@ +local a = require "nvim-lsp-installer.core.async" +local process = require "nvim-lsp-installer.process" +local platform = require "nvim-lsp-installer.platform" + +local async_spawn = a.promisify(process.spawn) + +local spawn = { + aliases = { + npm = platform.is_win and "npm.cmd" or "npm", + }, +} + +setmetatable(spawn, { + __index = function(self, k) + return function(args) + local stdio = process.in_memory_sink() + local cmd_args = {} + for i, arg in ipairs(args) do + cmd_args[i] = arg + end + ---@type JobSpawnOpts + local spawn_args = { + stdio_sink = stdio.sink, + cwd = args.cwd, + env = args.env, + args = cmd_args, + } + local cmd = self.aliases[k] or k + local _, exit_code = async_spawn(cmd, spawn_args) + assert(exit_code == 0, ("%q exited with an error code: %d."):format(cmd, exit_code)) + return table.concat(stdio.buffers.stdout, ""), table.concat(stdio.buffers.stderr, "") + end + end, +}) + +return spawn |
