nvim: Update schema-companion and kubernetes matcher
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
---@class schema_companion.Source
|
||||
local M = {}
|
||||
|
||||
M.name = "Kubernetes"
|
||||
|
||||
M.config = {}
|
||||
|
||||
---@param config {}
|
||||
---@return schema_companion.Source
|
||||
function M.setup(config)
|
||||
setmetatable(M, {})
|
||||
M.config = vim.tbl_deep_extend("force", {}, M.config, config)
|
||||
|
||||
return M
|
||||
end
|
||||
|
||||
function M:match(_, bufnr)
|
||||
local resources = {}
|
||||
|
||||
local current = {}
|
||||
for _, line in pairs(vim.api.nvim_buf_get_lines(bufnr, 0, -1, false)) do
|
||||
local _, _, group, version = line:find([[^apiVersion:%s*["']?([^%s"'/]*)/?([^%s"']*)]])
|
||||
local _, _, kind = line:find([[^kind:%s*["']?([^%s"'/]*)]])
|
||||
|
||||
if group and group ~= "" then
|
||||
current.group = group
|
||||
end
|
||||
if version and version ~= "" then
|
||||
current.version = version
|
||||
end
|
||||
if kind and kind ~= "" then
|
||||
current.kind = kind
|
||||
end
|
||||
|
||||
if current.group and current.kind then
|
||||
table.insert(resources, current)
|
||||
current = {}
|
||||
end
|
||||
end
|
||||
|
||||
local schemas = {}
|
||||
for _, resource in pairs(resources) do
|
||||
local api = resource.version and ("%s/%s"):format(resource.group, resource.version) or resource.group
|
||||
local schema = {
|
||||
name = ("%s@%s"):format(resource.kind, api),
|
||||
source = M.name,
|
||||
uri = require("kubernetes").yamlls_schema(),
|
||||
}
|
||||
if schema then
|
||||
table.insert(schemas, schema)
|
||||
end
|
||||
end
|
||||
|
||||
return schemas
|
||||
end
|
||||
|
||||
return M
|
||||
Reference in New Issue
Block a user