aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-07-07 13:48:19 +0200
committerGitHub <noreply@github.com>2022-07-07 13:48:19 +0200
commit680ad40597b7c5b8ba2b3a378e0862bc5142faa7 (patch)
treef7d13c479e7fc74df39ceac22c5afb1bf90ff482 /lua
parentdocs: highlight this still being in alpha stage (#3) (diff)
downloadmason-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.lua15
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),
}