relaycode
Version:
A developer assistant that automates applying code changes from LLMs.
2 lines • 1.69 kB
JavaScript
import {promises}from'fs';import n from'path';import {isEnoentError,getErrorMessage}from'./logger';const u=async(e,t=process.cwd())=>{try{return await promises.readFile(n.resolve(t,e),"utf-8")}catch(r){if(isEnoentError(r))return null;throw r}},g=async(e,t,r=process.cwd())=>{const i=e.replace(/[/\\]+$/,"");if(!i){console.warn(`Invalid file path (points to root directory): ${e}. Skipping.`);return}const s=n.resolve(r,i);await promises.mkdir(n.dirname(s),{recursive:true}),await promises.writeFile(s,t,"utf-8");},y=async(e,t=process.cwd())=>{try{await promises.unlink(n.resolve(t,e));}catch(r){if(r instanceof Error&&"code"in r&&(r.code==="ENOENT"||r.code==="ENOTDIR"))return;throw r}},f=async(e,t=process.cwd())=>{try{return await promises.access(n.resolve(t,e)),!0}catch{return false}},l=async(e,t)=>{try{await promises.rename(e,t);}catch(r){if(r instanceof Error&&"code"in r&&r.code==="EXDEV")await promises.copyFile(e,t),await promises.unlink(e);else throw r}},v=async(e,t,r=process.cwd())=>{const i=n.resolve(r,e),s=n.resolve(r,t);await promises.mkdir(n.dirname(s),{recursive:true}),await l(i,s);},p=async e=>{try{return (await promises.readdir(e)).length===0}catch{return false}},d=async(e,t)=>{if(!(!e.startsWith(t)||e===t))try{await p(e)&&(await promises.rmdir(e),await d(n.dirname(e),t));}catch(r){r instanceof Error&&"code"in r&&(r.code==="ENOENT"||r.code==="ENOTDIR")||console.warn(`Failed to clean up directory ${e}:`,getErrorMessage(r));}};export{y as deleteFile,f as fileExists,p as isDirectoryEmpty,u as readFileContent,d as removeEmptyParentDirectories,v as renameFile,l as safeRename,g as writeFileContent};//# sourceMappingURL=fs.js.map
//# sourceMappingURL=fs.js.map