diff --git a/lua/lazy/health.lua b/lua/lazy/health.lua index b3bf6f2..9e2a869 100644 --- a/lua/lazy/health.lua +++ b/lua/lazy/health.lua @@ -37,13 +37,17 @@ function M.have(cmd, opts) for _, c in ipairs(cmd) do if vim.fn.executable(c) == 1 then local version = vim.fn.system(c .. " " .. opts.version) or "" - version = vim.trim(vim.split(version, "\n")[1]) - version = version:gsub("^%s*" .. vim.pesc(c) .. "%s*", "") - if opts.version_pattern and not version:find(opts.version_pattern, 1, true) then - opts.warn(("`%s` version `%s` needed, but found `%s`"):format(c, opts.version_pattern, version)) + if vim.v.shell_error ~= 0 then + opts.error(("failed to get version of {%s}\n%s"):format(c, version)) else - found = ("{%s} `%s`"):format(c, version) - break + version = vim.trim(vim.split(version, "\n")[1]) + version = version:gsub("^%s*" .. vim.pesc(c) .. "%s*", "") + if opts.version_pattern and not version:find(opts.version_pattern, 1, true) then + opts.warn(("`%s` version `%s` needed, but found `%s`"):format(c, opts.version_pattern, version)) + else + found = ("{%s} `%s`"):format(c, version) + break + end end end end