diff options
| author | William Boman <william@redwill.se> | 2022-10-05 22:00:07 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-05 22:00:07 +0200 |
| commit | cc6404abe5cf7bf6be2b534c3ea671eebdffc645 (patch) | |
| tree | 63410e0b0d12bbb10a61e8218b66c99f1fa53689 /lua/mason-core/managers | |
| parent | feat(cargo): improve handling of git-based crates (#512) (diff) | |
| download | mason-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/mason-core/managers')
| -rw-r--r-- | lua/mason-core/managers/cargo/init.lua | 19 |
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 |
