diff --git a/lua/gopher/_utils/init.lua b/lua/gopher/_utils/init.lua index a6002e0..192a70c 100644 --- a/lua/gopher/_utils/init.lua +++ b/lua/gopher/_utils/init.lua @@ -3,8 +3,9 @@ local log = require "gopher._utils.log" local utils = {} ---@param msg string ----@param lvl number +---@param lvl? number function utils.deferred_notify(msg, lvl) + lvl = lvl or vim.log.levels.INFO vim.defer_fn(function() vim.notify(msg, lvl, { title = c.___plugin_name, diff --git a/lua/gopher/_utils/runner/init.lua b/lua/gopher/_utils/runner/init.lua index 1c430c0..809899d 100644 --- a/lua/gopher/_utils/runner/init.lua +++ b/lua/gopher/_utils/runner/init.lua @@ -23,9 +23,10 @@ end ---@param cmd (string|number)[] ---@param on_exit fun(out:vim.SystemCompleted) ----@param opts gopher.RunnerOpts +---@param opts? gopher.RunnerOpts ---@return vim.SystemObj function runner.async(cmd, on_exit, opts) + opts = opts or {} return vim.system(cmd, { cwd = opts.cwd or nil, timeout = opts.timeout or 2000, diff --git a/lua/gopher/installer.lua b/lua/gopher/installer.lua index ac60c03..de9cf4b 100644 --- a/lua/gopher/installer.lua +++ b/lua/gopher/installer.lua @@ -1,6 +1,7 @@ local c = require("gopher.config").commands local r = require "gopher._utils.runner" local u = require "gopher._utils" +local log = require "gopher._utils.log" local installer = {} local urls = { @@ -13,16 +14,17 @@ local urls = { ---@param pkg string local function install(pkg) local url = urls[pkg] .. "@latest" - r.sync(c.go, { - args = { "install", url }, - on_exit = function(data, status) - if not status == 0 then - error("go install failed: " .. data) - return - end - u.notify("installed: " .. url) - end, - }) + local function on_exit(opt) + if opt.code ~= 0 then + u.deferred_notify("go install failed: " .. url) + log.debug("go install failed:", "url", url, "stderr", opt.stderr) + return + end + + u.deferred_notify("go install'ed: " .. url) + end + + r.async({ c.go, "install", url }, on_exit) end ---Install required go deps