diff options
| author | William Boman <william@redwill.se> | 2022-07-07 13:48:19 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-07 13:48:19 +0200 |
| commit | 680ad40597b7c5b8ba2b3a378e0862bc5142faa7 (patch) | |
| tree | f7d13c479e7fc74df39ceac22c5afb1bf90ff482 /lua | |
| parent | docs: highlight this still being in alpha stage (#3) (diff) | |
| download | mason-680ad40597b7c5b8ba2b3a378e0862bc5142faa7.tar mason-680ad40597b7c5b8ba2b3a378e0862bc5142faa7.tar.gz mason-680ad40597b7c5b8ba2b3a378e0862bc5142faa7.tar.bz2 mason-680ad40597b7c5b8ba2b3a378e0862bc5142faa7.tar.lz mason-680ad40597b7c5b8ba2b3a378e0862bc5142faa7.tar.xz mason-680ad40597b7c5b8ba2b3a378e0862bc5142faa7.tar.zst mason-680ad40597b7c5b8ba2b3a378e0862bc5142faa7.zip | |
fix(go): strip wildcard specifier from package names when necessary (#4)
Diffstat (limited to 'lua')
| -rw-r--r-- | lua/mason/core/managers/go/init.lua | 15 |
1 files changed, 11 insertions, 4 deletions
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), } |
