gopher.nvim/lua/gopher/_utils/runner.lua
2023-08-09 12:01:31 +03:00

28 lines
574 B
Lua

local Job = require "plenary.job"
local runner = {}
---@class gopher.RunnerOpts
---@field args string[]
---@field cwd? string?
---@field on_exit? fun(data:string, status:number)
---@param cmd string
---@param opts gopher.RunnerOpts
---@return string
function runner.sync(cmd, opts)
local output
Job:new({
command = cmd,
args = opts.args,
cwd = opts.cwd,
on_exit = function(data, status)
vim.schedule(function()
output = data:result()
opts.on_exit(output, status)
end)
end,
}):sync()
return output
end
return runner