diff options
| author | William Boman <william@redwill.se> | 2022-03-26 13:41:50 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-26 13:41:50 +0100 |
| commit | 212d17a039da449043b67529c29851db37acc236 (patch) | |
| tree | 38411b14487895cef0d7648e198b79fd28793fe6 /lua/nvim-lsp-installer/core/async/spawn.lua | |
| parent | run autogen_metadata.lua (diff) | |
| download | mason-212d17a039da449043b67529c29851db37acc236.tar mason-212d17a039da449043b67529c29851db37acc236.tar.gz mason-212d17a039da449043b67529c29851db37acc236.tar.bz2 mason-212d17a039da449043b67529c29851db37acc236.tar.lz mason-212d17a039da449043b67529c29851db37acc236.tar.xz mason-212d17a039da449043b67529c29851db37acc236.tar.zst mason-212d17a039da449043b67529c29851db37acc236.zip | |
add async managers (#536)
Diffstat (limited to 'lua/nvim-lsp-installer/core/async/spawn.lua')
| -rw-r--r-- | lua/nvim-lsp-installer/core/async/spawn.lua | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/lua/nvim-lsp-installer/core/async/spawn.lua b/lua/nvim-lsp-installer/core/async/spawn.lua deleted file mode 100644 index 5fc7eee7..00000000 --- a/lua/nvim-lsp-installer/core/async/spawn.lua +++ /dev/null @@ -1,63 +0,0 @@ -local a = require "nvim-lsp-installer.core.async" -local Result = require "nvim-lsp-installer.core.result" -local process = require "nvim-lsp-installer.process" -local platform = require "nvim-lsp-installer.platform" - -local async_spawn = a.promisify(process.spawn) - ----@type Record<string, fun(opts: JobSpawnOpts): Result> -local spawn = { - aliases = { - npm = platform.is_win and "npm.cmd" or "npm", - }, -} - -local function Failure(err, cmd) - return Result.failure(setmetatable(err, { - __tostring = function() - return ("spawn: %s failed with exit code %d"):format(cmd, err.exit_code) - end, - })) -end - -setmetatable(spawn, { - __index = function(self, k) - return function(args) - local cmd_args = {} - for i, arg in ipairs(args) do - cmd_args[i] = arg - end - ---@type JobSpawnOpts - local spawn_args = { - stdio_sink = args.stdio_sink, - cwd = args.cwd, - env = args.env, - args = cmd_args, - } - - local stdio - if not spawn_args.stdio_sink then - stdio = process.in_memory_sink() - spawn_args.stdio_sink = stdio.sink - end - - local cmd = self.aliases[k] or k - local _, exit_code = async_spawn(cmd, spawn_args) - - if exit_code == 0 then - return Result.success { - stdout = stdio and table.concat(stdio.buffers.stdout, "") or nil, - stderr = stdio and table.concat(stdio.buffers.stderr, "") or nil, - } - else - return Failure({ - exit_code = exit_code, - stdout = stdio and table.concat(stdio.buffers.stdout, "") or nil, - stderr = stdio and table.concat(stdio.buffers.stderr, "") or nil, - }, cmd) - end - end - end, -}) - -return spawn |
