aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/installer/registry/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/mason-core/installer/registry/init.lua')
-rw-r--r--lua/mason-core/installer/registry/init.lua13
1 files changed, 13 insertions, 0 deletions
diff --git a/lua/mason-core/installer/registry/init.lua b/lua/mason-core/installer/registry/init.lua
index f5655572..27a7da2a 100644
--- a/lua/mason-core/installer/registry/init.lua
+++ b/lua/mason-core/installer/registry/init.lua
@@ -42,6 +42,7 @@ end
---@class InstallerProvider
---@field parse fun(source: RegistryPackageSource, purl: Purl, opts: PackageInstallOpts): Result
---@field install async fun(ctx: InstallContext, source: ParsedPackageSource, purl: Purl): Result
+---@field get_versions async fun(purl: Purl, source: RegistryPackageSource): Result # Result<string[]>
---@class ParsedPackageSource
@@ -204,4 +205,16 @@ function M.compile(spec, opts)
end)
end
+---@async
+---@param spec RegistryPackageSpec
+function M.get_versions(spec)
+ return Result.try(function(try)
+ ---@type Purl
+ local purl = try(Purl.parse(spec.source.id))
+ ---@type InstallerProvider
+ local provider = try(get_provider(purl))
+ return provider.get_versions(purl, spec.source)
+ end)
+end
+
return M