aboutsummaryrefslogtreecommitdiffstats
path: root/lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2022-10-05 22:00:07 +0200
committerGitHub <noreply@github.com>2022-10-05 22:00:07 +0200
commitcc6404abe5cf7bf6be2b534c3ea671eebdffc645 (patch)
tree63410e0b0d12bbb10a61e8218b66c99f1fa53689 /lua
parentfeat(cargo): improve handling of git-based crates (#512) (diff)
downloadmason-cc6404abe5cf7bf6be2b534c3ea671eebdffc645.tar
mason-cc6404abe5cf7bf6be2b534c3ea671eebdffc645.tar.gz
mason-cc6404abe5cf7bf6be2b534c3ea671eebdffc645.tar.bz2
mason-cc6404abe5cf7bf6be2b534c3ea671eebdffc645.tar.lz
mason-cc6404abe5cf7bf6be2b534c3ea671eebdffc645.tar.xz
mason-cc6404abe5cf7bf6be2b534c3ea671eebdffc645.tar.zst
mason-cc6404abe5cf7bf6be2b534c3ea671eebdffc645.zip
refactor(cargo): utilize optional chaining (#513)
Diffstat (limited to 'lua')
-rw-r--r--lua/mason-core/managers/cargo/init.lua19
1 files changed, 10 insertions, 9 deletions
diff --git a/lua/mason-core/managers/cargo/init.lua b/lua/mason-core/managers/cargo/init.lua
index 8890daf6..07883cbf 100644
--- a/lua/mason-core/managers/cargo/init.lua
+++ b/lua/mason-core/managers/cargo/init.lua
@@ -125,6 +125,7 @@ end
---@async
---@param install_dir string
+---@return Result # Result<table<string, InstalledCrate>>
local function get_installed_crates(install_dir)
return spawn
.cargo({
@@ -188,15 +189,15 @@ end
---@param receipt InstallReceipt<InstallReceiptPackageSource>
---@param install_dir string
function M.get_installed_primary_package_version(receipt, install_dir)
- return get_installed_crates(install_dir):map(function(pkgs)
- if vim.in_fast_event() then
- a.scheduler()
- end
- local pkg = vim.fn.fnamemodify(receipt.primary_source.package, ":t")
- return Optional.of_nilable(pkgs[pkg])
- :map(_.prop "version")
- :or_else_throw "Failed to find cargo package version."
- end)
+ if vim.in_fast_event() then
+ a.scheduler()
+ end
+ local crate_name = vim.fn.fnamemodify(receipt.primary_source.package, ":t")
+ return get_installed_crates(install_dir)
+ :ok()
+ :map(_.prop(crate_name))
+ :map(_.prop "version")
+ :ok_or(_.always "Failed to find cargo package version.")
end
return M