local M = {} local uv = vim.loop local config = require('chatgpt_nvim.config') local function ensure_dir(path) local st = uv.fs_stat(path) if st and st.type == 'directory' then return true end local parent = path:match("(.*)/") if parent and parent ~= "" then ensure_dir(parent) end uv.fs_mkdir(path, 511) return true end function M.get_clipboard_content() local conf = config.load() local content = vim.fn.getreg('+') if conf.debug then vim.api.nvim_out_write("[chatgpt_nvim:handler] Clipboard content length: " .. #content .. "\n") end return content end function M.write_file(filepath, content) local conf = config.load() local dir = filepath:match("(.*)/") if dir and dir ~= "" then ensure_dir(dir) end local fd = uv.fs_open(filepath, "w", 438) if not fd then vim.api.nvim_err_writeln("Could not open file for writing: " .. filepath) if conf.debug then vim.api.nvim_out_write("[chatgpt_nvim:handler] Failed to open file for writing: " .. filepath .. "\n") end return end uv.fs_write(fd, content, -1) uv.fs_close(fd) if conf.debug then vim.api.nvim_out_write("[chatgpt_nvim:handler] Successfully wrote file: " .. filepath .. "\n") end end function M.delete_file(filepath) local conf = config.load() local st = uv.fs_stat(filepath) if st then local success, err = uv.fs_unlink(filepath) if not success then vim.api.nvim_err_writeln("Could not delete file: " .. filepath .. " - " .. (err or "unknown error")) if conf.debug then vim.api.nvim_out_write("[chatgpt_nvim:handler] Failed to delete file: " .. filepath .. "\n") end else if conf.debug then vim.api.nvim_out_write("[chatgpt_nvim:handler] Deleted file: " .. filepath .. "\n") end end else vim.api.nvim_err_writeln("File not found, cannot delete: " .. filepath) if conf.debug then vim.api.nvim_out_write("[chatgpt_nvim:handler] File not found for deletion: " .. filepath .. "\n") end end end function M.finish() print("Finished processing files.") end return M