aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-registry/init.lua
diff options
context:
space:
mode:
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",