aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/installer/InstallHandle.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2025-02-16 17:07:22 +0100
committerWilliam Boman <william@redwill.se>2025-02-19 12:15:49 +0100
commit5063ba98dc220a754caf68e510fb192755b1bdf0 (patch)
tree174abf2bd4339e3ea1db3652610469f3f09e24b2 /lua/mason-core/installer/InstallHandle.lua
parentfeat(context): add ctx:fetch() (diff)
downloadmason-5063ba98dc220a754caf68e510fb192755b1bdf0.tar
mason-5063ba98dc220a754caf68e510fb192755b1bdf0.tar.gz
mason-5063ba98dc220a754caf68e510fb192755b1bdf0.tar.bz2
mason-5063ba98dc220a754caf68e510fb192755b1bdf0.tar.lz
mason-5063ba98dc220a754caf68e510fb192755b1bdf0.tar.xz
mason-5063ba98dc220a754caf68e510fb192755b1bdf0.tar.zst
mason-5063ba98dc220a754caf68e510fb192755b1bdf0.zip
refactor: turn StdioSink into a proper class
Diffstat (limited to 'lua/mason-core/installer/InstallHandle.lua')
-rw-r--r--lua/mason-core/installer/InstallHandle.lua24
1 files changed, 4 insertions, 20 deletions
diff --git a/lua/mason-core/installer/InstallHandle.lua b/lua/mason-core/installer/InstallHandle.lua
index f5a42c53..22c654a3 100644
--- a/lua/mason-core/installer/InstallHandle.lua
+++ b/lua/mason-core/installer/InstallHandle.lua
@@ -45,7 +45,7 @@ end
---@class InstallHandle : EventEmitter
---@field package AbstractPackage
---@field state InstallHandleState
----@field stdio { buffers: { stdout: string[], stderr: string[] }, sink: StdioSink }
+---@field stdio_sink BufferedSink
---@field is_terminated boolean
---@field location InstallLocation
---@field private spawn_handles InstallHandleSpawnHandle[]
@@ -53,33 +53,17 @@ local InstallHandle = {}
InstallHandle.__index = InstallHandle
setmetatable(InstallHandle, { __index = EventEmitter })
----@param handle InstallHandle
-local function new_sink(handle)
- local stdout, stderr = {}, {}
- return {
- buffers = { stdout = stdout, stderr = stderr },
- sink = {
- stdout = function(chunk)
- stdout[#stdout + 1] = chunk
- handle:emit("stdout", chunk)
- end,
- stderr = function(chunk)
- stderr[#stderr + 1] = chunk
- handle:emit("stderr", chunk)
- end,
- },
- }
-end
-
---@param pkg AbstractPackage
---@param location InstallLocation
function InstallHandle:new(pkg, location)
---@type InstallHandle
local instance = EventEmitter.new(self)
+ local sink = process.BufferedSink:new()
+ sink:connect_events(instance)
instance.state = "IDLE"
instance.package = pkg
instance.spawn_handles = {}
- instance.stdio = new_sink(instance)
+ instance.stdio_sink = sink
instance.is_terminated = false
instance.location = location
return instance