50 lines
1.1 KiB
Lua
50 lines
1.1 KiB
Lua
local augroup = vim.api.nvim_create_augroup("Vitruvio", { clear = true })
|
|
|
|
local post = function(url, file_path)
|
|
vim.fn.system({
|
|
"curl",
|
|
"-X", "POST",
|
|
"-H", "Content-Type: application/xml",
|
|
"--data-binary", "@" .. file_path,
|
|
url
|
|
})
|
|
end
|
|
|
|
local function main()
|
|
vim.api.nvim_create_user_command("VitruvioURL", function(opts)
|
|
vim.b.vitruvio_url = opts.fargs[1]
|
|
end, { nargs = 1 })
|
|
if vim.bo.filetype == "xml" then
|
|
local g = vim.api.nvim_create_augroup("VitruvioBufWritePost", { clear = true })
|
|
vim.api.nvim_create_autocmd("BufWritePost", {
|
|
group = g,
|
|
desc = "Live reload",
|
|
callback = function()
|
|
if vim.bo.filetype == "xml" then
|
|
local url = vim.b.vitruvio_url
|
|
if url then
|
|
local filename = vim.api.nvim_buf_get_name(0)
|
|
post(url, filename)
|
|
else
|
|
if not vim.b.notified then
|
|
print("É necessário atribuir um URL com :VitruvioURL")
|
|
vim.b.notified = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
})
|
|
end
|
|
end
|
|
|
|
local function setup()
|
|
vim.api.nvim_create_autocmd("BufEnter",
|
|
{
|
|
group = augroup,
|
|
desc = "Utilidades para o desenvolvedor do Vitruvio",
|
|
callback = main
|
|
})
|
|
end
|
|
|
|
return { setup = setup }
|