From 24af00f6a7f624feda4b6aaceb4c5b0fa6f536d6 Mon Sep 17 00:00:00 2001 From: Aylur Date: Thu, 22 Aug 2024 02:14:36 +0200 Subject: feat: async Process.exec the exec_async function was not truly async but a signal based one --- lua/astal/process.lua | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) (limited to 'lua/astal/process.lua') diff --git a/lua/astal/process.lua b/lua/astal/process.lua index 804fd0f..3d10f8b 100644 --- a/lua/astal/process.lua +++ b/lua/astal/process.lua @@ -68,26 +68,27 @@ end ---@param commandline string | string[] ---@param on_stdout? fun(out: string): nil ---@param on_stderr? fun(err: string): nil ----@return { kill: function } | nil proc function M.exec_async(commandline, on_stdout, on_stderr) local out, err = defualt_proc_args(on_stdout, on_stderr) - local proc, fail if type(commandline) == "table" then - proc, fail = Astal.Process.exec_asyncv(commandline) + Astal.Process.exec_asyncv(commandline, function(_, res) + local stdout, fail = Astal.exec_asyncv_finish(res) + if fail ~= nil then + err(fail) + else + out(stdout) + end + end) else - proc, fail = Astal.Process.exec_async(commandline) + Astal.Process.exec_async(commandline, function(_, res) + local stdout, fail = Astal.exec_finish(res) + if fail ~= nil then + err(fail) + else + out(stdout) + end + end) end - if fail ~= nil then - err(fail) - return nil - end - proc.on_stdout = function(_, str) - out(str) - end - proc.on_stderr = function(_, str) - err(str) - end - return proc end return M -- cgit v1.2.3