diff options
| author | William Boman <william@redwill.se> | 2023-04-22 19:20:52 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-22 19:20:52 +0200 |
| commit | 579d4bd178f4aae76a4f4dc2ea34bf5e8fa6231b (patch) | |
| tree | ec3b23ec8a00ba1922bda6c7cf80a0c9242e1978 /lua/mason-registry/init.lua | |
| parent | chore: remove generate scripts and artifacts (#1246) (diff) | |
| download | mason-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.lua | 10 |
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", |
