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