From 21a2475da458e97be798bdc9261da24460da5c65 Mon Sep 17 00:00:00 2001 From: William Boman Date: Mon, 26 Dec 2022 17:43:01 +0100 Subject: refactor: interact with libuv pipes in async context (#808) Also now properly close pipes (shutdown -> close). --- lua/mason-core/fetch.lua | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'lua/mason-core/fetch.lua') diff --git a/lua/mason-core/fetch.lua b/lua/mason-core/fetch.lua index fbb755b8..a6db7c6b 100644 --- a/lua/mason-core/fetch.lua +++ b/lua/mason-core/fetch.lua @@ -1,3 +1,5 @@ +local a = require "mason-core.async" +local async_uv = require "mason-core.async.uv" local log = require "mason-core.log" local platform = require "mason-core.platform" local Result = require "mason-core.result" @@ -105,14 +107,15 @@ local function fetch(url, opts) opts.data and { "-d", "@-" } or vim.NIL, opts.out_file and { "-o", opts.out_file } or vim.NIL, url, - on_spawn = function(_, stdio) + on_spawn = a.scope(function(_, stdio) local stdin = stdio[1] if opts.data then log.trace("Writing stdin to curl", opts.data) - stdin:write(opts.data) + async_uv.write(stdin, opts.data) end - stdin:close() - end, + async_uv.shutdown(stdin) + async_uv.close(stdin) + end), } end -- cgit v1.2.3-70-g09d2