aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-registry/init.lua
diff options
context:
space:
mode:
authorWilliam Boman <william@redwill.se>2023-04-22 19:20:52 +0200
committerGitHub <noreply@github.com>2023-04-22 19:20:52 +0200
commit579d4bd178f4aae76a4f4dc2ea34bf5e8fa6231b (patch)
treeec3b23ec8a00ba1922bda6c7cf80a0c9242e1978 /lua/mason-registry/init.lua
parentchore: remove generate scripts and artifacts (#1246) (diff)
downloadmason-579d4bd178f4aae76a4f4dc2ea34bf5e8fa6231b.tar
mason-579d4bd178f4aae76a4f4dc2ea34bf5e8fa6231b.tar.gz
mason-579d4bd178f4aae76a4f4dc2ea34bf5e8fa6231b.tar.bz2
mason-579d4bd178f4aae76a4f4dc2ea34bf5e8fa6231b.tar.lz
mason-579d4bd178f4aae76a4f4dc2ea34bf5e8fa6231b.tar.xz
mason-579d4bd178f4aae76a4f4dc2ea34bf5e8fa6231b.tar.zst
mason-579d4bd178f4aae76a4f4dc2ea34bf5e8fa6231b.zip
feat(registry): add .get_all_package_specs() (#1247)
This is a faster method than .get_all_packages() due to the fact that it only loads package specifications without instantiating mason-core.package instances. Useful for situations where one only needs to read spec data.
Diffstat (limited to 'lua/mason-registry/init.lua')
-rw-r--r--lua/mason-registry/init.lua10
1 files changed, 10 insertions, 0 deletions
diff --git a/lua/mason-registry/init.lua b/lua/mason-registry/init.lua
index e798ac92..a407ad4f 100644
--- a/lua/mason-registry/init.lua
+++ b/lua/mason-registry/init.lua
@@ -10,6 +10,7 @@ local sources = require "mason-registry.sources"
---@field id string
---@field get_package fun(self: RegistrySource, pkg_name: string): Package?
---@field get_all_package_names fun(self: RegistrySource): string[]
+---@field get_all_package_specs fun(self: RegistrySource): PackageSpec[] | RegistryPackageSpec[]
---@field get_display_name fun(self: RegistrySource): string
---@field is_installed fun(self: RegistrySource): boolean
---@field get_installer fun(self: RegistrySource): Optional # Optional<async fun (): Result>
@@ -119,6 +120,15 @@ function M.get_all_packages()
return get_packages(M.get_all_package_names())
end
+---@return (RegistryPackageSpec | PackageSpec)[]
+function M.get_all_package_specs()
+ local specs = {}
+ for source in sources.iter() do
+ vim.list_extend(specs, source:get_all_package_specs())
+ end
+ return _.uniq_by(_.prop "name", specs)
+end
+
local STATE_FILE = path.concat {
vim.fn.stdpath((vim.fn.has "nvim-0.8.0" == 1) and "state" or "cache"),
"mason-registry-update",