From b8a6632a0f2d263199d5d480ca85477fe0f414ab Mon Sep 17 00:00:00 2001 From: William Boman Date: Mon, 20 Feb 2023 22:19:39 +0100 Subject: feat: configurable registries (#1016) --- lua/mason-registry/sources/lua.lua | 43 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 lua/mason-registry/sources/lua.lua (limited to 'lua/mason-registry/sources/lua.lua') diff --git a/lua/mason-registry/sources/lua.lua b/lua/mason-registry/sources/lua.lua new file mode 100644 index 00000000..94b4e4f8 --- /dev/null +++ b/lua/mason-registry/sources/lua.lua @@ -0,0 +1,43 @@ +---@class LuaRegistrySourceSpec +---@field id string +---@field mod string + +---@class LuaRegistrySource : RegistrySource +---@field private spec LuaRegistrySourceSpec +local LuaRegistrySource = {} +LuaRegistrySource.__index = LuaRegistrySource + +---@param spec LuaRegistrySourceSpec +function LuaRegistrySource.new(spec) + return setmetatable({ + spec = spec, + }, LuaRegistrySource) +end + +function LuaRegistrySource:get_package(pkg_name) + local index = require(self.spec.mod) + if index[pkg_name] then + return require(index[pkg_name]) + end +end + +function LuaRegistrySource:get_all_package_names() + local index = require(self.spec.mod) + return vim.tbl_keys(index) +end + +function LuaRegistrySource:is_installed() + local ok = pcall(require, self.spec.mod) + return ok +end + +function LuaRegistrySource:install() + local Result = require "mason-core.result" + return Result.success() +end + +function LuaRegistrySource:__tostring() + return ("LuaRegistry(mod=%s)"):format(self.spec.mod) +end + +return LuaRegistrySource -- cgit v1.2.3-70-g09d2