From 680ad40597b7c5b8ba2b3a378e0862bc5142faa7 Mon Sep 17 00:00:00 2001 From: William Boman Date: Thu, 7 Jul 2022 13:48:19 +0200 Subject: fix(go): strip wildcard specifier from package names when necessary (#4) --- lua/mason/core/managers/go/init.lua | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'lua') diff --git a/lua/mason/core/managers/go/init.lua b/lua/mason/core/managers/go/init.lua index b9b4898a..efa062a6 100644 --- a/lua/mason/core/managers/go/init.lua +++ b/lua/mason/core/managers/go/init.lua @@ -81,6 +81,11 @@ function M.parse_mod_version_output(output) return result end +---@param pkg string +function M.strip_package_wildcard(pkg) + return string.gsub(pkg, "/%.%.%.$", "") +end + ---@async ---@param receipt InstallReceipt ---@param install_dir string @@ -88,8 +93,9 @@ function M.get_installed_primary_package_version(receipt, install_dir) if vim.in_fast_event() then a.scheduler() end + local normalized_pkg_name = M.strip_package_wildcard(receipt.primary_source.package) -- trims e.g. golang.org/x/tools/gopls to gopls - local executable = vim.fn.fnamemodify(receipt.primary_source.package, ":t") + local executable = vim.fn.fnamemodify(normalized_pkg_name, ":t") return spawn .go({ "version", @@ -99,7 +105,7 @@ function M.get_installed_primary_package_version(receipt, install_dir) }) :map_catching(function(result) local parsed_output = M.parse_mod_version_output(result.stdout) - return Optional.of_nilable(parsed_output.mod[receipt.primary_source.package]) + return Optional.of_nilable(parsed_output.mod[normalized_pkg_name]) :or_else_throw "Failed to parse mod version" end) end @@ -108,12 +114,13 @@ end ---@param receipt InstallReceipt ---@param install_dir string function M.check_outdated_primary_package(receipt, install_dir) + local normalized_pkg_name = M.strip_package_wildcard(receipt.primary_source.package) return spawn .go({ "list", "-json", "-m", - ("%s@latest"):format(receipt.primary_source.package), + ("%s@latest"):format(normalized_pkg_name), cwd = install_dir, }) :map_catching(function(result) @@ -125,7 +132,7 @@ function M.check_outdated_primary_package(receipt, install_dir) M.get_installed_primary_package_version(receipt, install_dir):get_or_throw() if installed_version ~= latest_version then return { - name = receipt.primary_source.package, + name = normalized_pkg_name, current_version = assert(installed_version), latest_version = assert(latest_version), } -- cgit v1.2.3-70-g09d2