|
|
|
@ -53,12 +53,21 @@ local _parse_record = function(rec)
|
|
|
|
|
for _, v in ipairs(rec) do
|
|
|
|
|
if v ~= nil and v ~= "" then
|
|
|
|
|
local key = v:match("%w+"):lower()
|
|
|
|
|
if vim.tbl_contains({ "zone", "rtype", "name", "data", "ttl" }, key) then
|
|
|
|
|
record[key] = v:gsub("%w+%:%s", "")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return record
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local _validate_record = function(record)
|
|
|
|
|
if record.zone == nil or record.rtype == nil or record.name == nil or record.data == nil then
|
|
|
|
|
return false
|
|
|
|
|
end
|
|
|
|
|
return true
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local M = {}
|
|
|
|
|
M.add = function(_)
|
|
|
|
|
local tempfile = vim.fn.tempname()
|
|
|
|
@ -82,6 +91,7 @@ M.add = function(_)
|
|
|
|
|
callback = function(_)
|
|
|
|
|
local new = vim.api.nvim_buf_get_lines(buffer, 0, -1, false)
|
|
|
|
|
local record = _parse_record(new)
|
|
|
|
|
if _validate_record(record) then
|
|
|
|
|
local command = "knotctl add -z " .. record.zone ..
|
|
|
|
|
" -t " .. record.ttl ..
|
|
|
|
|
" -n " .. record.name ..
|
|
|
|
@ -91,6 +101,9 @@ M.add = function(_)
|
|
|
|
|
if choice == 1 then
|
|
|
|
|
log.info(vim.fn.system(command))
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
log.error("Invalid record")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
})
|
|
|
|
|
end
|
|
|
|
@ -182,6 +195,7 @@ M.update = function(opts)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
if did_update then
|
|
|
|
|
if _validate_record(cleannew) and _validate_record(cleanold) then
|
|
|
|
|
local command = "knotctl update -z " .. cleanold.zone ..
|
|
|
|
|
" -t " .. cleanold.ttl ..
|
|
|
|
|
" -n " .. cleanold.name ..
|
|
|
|
@ -192,6 +206,9 @@ M.update = function(opts)
|
|
|
|
|
if choice == 1 then
|
|
|
|
|
log.info(vim.fn.system(command))
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
log.error("Invalid record")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|