refactor: moved manage functionality to its own module

This commit is contained in:
Folke Lemaitre 2022-11-27 11:02:28 +01:00
parent 42c2fb42c8
commit 6dc45ada55
No known key found for this signature in database
GPG key ID: 41F8B1FBACAE2040
6 changed files with 22 additions and 24 deletions

View file

@ -0,0 +1,68 @@
---@class Runner
---@field _tasks LazyTask[]
local Runner = {}
function Runner.new()
local self = setmetatable({}, {
__index = Runner,
})
self._tasks = {}
return self
end
---@param task LazyTask
function Runner:add(task)
table.insert(self._tasks, task)
task:start()
end
function Runner:is_empty()
return #self._tasks == 0
end
---@return LazyPlugin[]
function Runner:plugins()
---@param task LazyTask
return vim.tbl_map(function(task)
return task.plugin
end, self._tasks)
end
function Runner:tasks()
return self._tasks
end
---@param cb? fun()
function Runner:wait(cb)
if #self._tasks == 0 then
return cb and cb()
end
local done = false
local check = vim.loop.new_check()
check:start(function()
for _, task in ipairs(self._tasks) do
if task.running then
return
end
end
check:stop()
done = true
if cb then
vim.schedule(cb)
end
end)
if not cb then
while not done do
vim.wait(100)
end
end
end
return Runner