nvexeca
Version:
nvm + execa = nvexeca
41 lines (24 loc) • 769 B
JavaScript
import{mkdir,rename,rm,writeFile}from"node:fs/promises";
import{pathExists}from"path-exists";
export const writeBinaries=async(srcPaths,distBinDir)=>{
if(await pathExists(distBinDir)){
return
}
const tmpBinDir=getTmpBinDir(distBinDir);
await mkdir(tmpBinDir,{recursive:true});
await Promise.all(srcPaths.map((srcPath)=>writeBinary(srcPath,tmpBinDir)));
try{
await rename(tmpBinDir,distBinDir)
}catch{
await rm(tmpBinDir,{force:true,recursive:true})
}
};
const getTmpBinDir=(distBinDir)=>{
const randomId=String(Math.random()).replace(".","");
return`${distBinDir}-${randomId}`
};
const writeBinary=async({filename,content},tmpBinDir)=>{
const tmpPath=`${tmpBinDir}/${filename}`;
await writeFile(tmpPath,content,{mode:DIST_MODE})
};
const DIST_MODE=493;