aboutsummaryrefslogtreecommitdiffstats
path: root/lua/mason-core/package/init.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/mason-core/package/init.lua')
-rw-r--r--lua/mason-core/package/init.lua16
1 files changed, 11 insertions, 5 deletions
diff --git a/lua/mason-core/package/init.lua b/lua/mason-core/package/init.lua
index 7ebac5af..e0a361ca 100644
--- a/lua/mason-core/package/init.lua
+++ b/lua/mason-core/package/init.lua
@@ -63,6 +63,9 @@ local PackageMt = { __index = Package }
---@field id string PURL-compliant identifier.
---@field version_overrides? RegistryPackageSourceVersionOverride[]
+---@class RegistryPackageSchemas
+---@field lsp string?
+
---@class RegistryPackageSpec
---@field schema '"registry+v1"'
---@field name string
@@ -72,6 +75,7 @@ local PackageMt = { __index = Package }
---@field languages string[]
---@field categories string[]
---@field source RegistryPackageSource
+---@field schemas RegistryPackageSchemas?
---@field bin table<string, string>?
---@field share table<string, string>?
---@field opt table<string, string>?
@@ -127,7 +131,7 @@ function Package:new_handle()
return handle
end
----@alias PackageInstallOpts { version?: string, debug?: boolean, target?: string, force?: boolean }
+---@alias PackageInstallOpts { version?: string, debug?: boolean, target?: string, force?: boolean, strict?: boolean }
---@param opts? PackageInstallOpts
---@return InstallHandle
@@ -292,11 +296,13 @@ function Package:check_new_version(callback)
end
function Package:get_lsp_settings_schema()
- local ok, schema = pcall(require, ("mason-schemas.lsp.%s"):format(self.name))
- if not ok then
- return Optional.empty()
+ local schema_file = path.share_prefix(path.concat { "mason-schemas", "lsp", ("%s.json"):format(self.name) })
+ if fs.sync.file_exists(schema_file) then
+ return Result.pcall(vim.json.decode, fs.sync.read_file(schema_file), {
+ luanil = { object = true, array = true },
+ }):ok()
end
- return Optional.of(schema)
+ return Optional.empty()
end
---@return boolean