Ajustado para subir arquivos

This commit is contained in:
Lucas Miguel
2024-12-03 22:49:40 -03:00
parent 2803343287
commit 0f7e9a02cf
2 changed files with 26 additions and 33 deletions

View File

@@ -79,54 +79,42 @@ local function getConfig()
end end
function M.Upload() function M.Upload()
getConfig() getConfig()
local current_buffer_path = vim.api.nvim_buf_get_name(0) local current_buffer_path = vim.api.nvim_buf_get_name(0)
local directoryTemp = directory local directoryTemp = directory
-- message.warn("Send file ... Wait") message.warn("Send file ... Wait")
if not directoryTemp:match("/$") then if not directoryTemp:match("/$") then
directoryTemp = directoryTemp .. "/" directoryTemp = directoryTemp .. "/"
end end
local relative_path = current_buffer_path:sub(#directoryTemp + 1) local relative_path = current_buffer_path:sub(#directoryTemp + 1)
if not config.remote_path:match("/$") then if not config.remote_path:match("/$") then
config.remote_path = config.remote_path .. "/" config.remote_path = config.remote_path .. "/"
end end
local remotePath = config.remote_path .. relative_path local remotePath = config.remote_path .. relative_path
local ftp_script = string.format([[
open %s
user %s %s
put %s %s
bye
]], config.host, config.user, config.password, current_buffer_path, remotePath)
local script_file = "ftp_commands.txt" local command = string.format(
local file = io.open(script_file, "w") 'curl -T "%s" ftp://%s/%s --user "%s:%s" > /dev/null 2>&1',
file:write(ftp_script) current_buffer_path, config.host, remotePath, config.user, config.password)
file:close()
local log_file = "/tmp/ftp_log.txt" vim.loop.spawn("sh", {
args = { "-c", command },
local exit_code = os.execute(string.format("ftp -n < %s > %s 2>&1", script_file, log_file)) }, function(code, signal)
if code == 0 then
vim.schedule(function()
local log = io.open(log_file, "r") message.info("File uploaded successfully!")
local log_content = log:read("*a") end)
log:close() else
vim.schedule(function()
if log_content:match("Error") or log_content:match("fail") then message.error("File upload failed with exit code: " .. code)
message.error("Fail to upload file!" .. log_content) end)
else end
message.success("File send successfully!") end)
end
os.remove(script_file)
os.remove(log_file)
end end

View File

@@ -7,6 +7,11 @@ M.warn = vim.schedule_wrap(function(fmt, ...)
vim.notify(fmt:format(...), levels.WARN, { title = 'Sync FTP' }) vim.notify(fmt:format(...), levels.WARN, { title = 'Sync FTP' })
end) end)
--- @type fun(fmt: string, ...: string)
M.info = vim.schedule_wrap(function(fmt, ...)
vim.notify(fmt:format(...), vim.log.INFO, { title = 'Sync FTP' })
end)
--- @type fun(fmt: string, ...: string) --- @type fun(fmt: string, ...: string)
M.error = vim.schedule_wrap(function(fmt, ...) M.error = vim.schedule_wrap(function(fmt, ...)
vim.notify(fmt:format(...), vim.log.levels.ERROR, { title = 'Sync FTP' }) vim.notify(fmt:format(...), vim.log.levels.ERROR, { title = 'Sync FTP' })
@@ -18,7 +23,7 @@ M.error_once = vim.schedule_wrap(function(fmt, ...)
end) end)
M.success = vim.schedule_wrap(function(fmt, ...) M.success = vim.schedule_wrap(function(fmt, ...)
vim.notify(fmt:format(...), levels.SUCCESS, { title = 'Sync FTP'}) vim.notify(fmt:format(...), vim.log.INFO, { title = 'Sync FTP'})
end) end)
return M return M