UNPKG

node-copy-files

Version:
2 lines (1 loc) 878 B
"use strict";const fs=require("fs");function getStat(i,t){fs.stat(i,(i,r)=>{if(i)throw i;t(r)})}function readDir(i,t,r){fs.readdir(i,(i,e)=>{i?r():t(e)})}function mkDir(i,t){fs.mkdir(i,i=>{if(i)throw i;t()})}function readAndMkDir(i,t,r){readDir(t,()=>{readDir(i,r)},()=>{mkDir(t,()=>{readDir(i,r)})})}function handleFile(i,t,r){fs.readFile(i,(e,n)=>{if(e)throw e;if(r){if("function"!=typeof r)throw new Error("callback is not function");n=r(n,i,t)}fs.writeFile(t,n,i=>{if(i)throw i})})}function visitDirectory(i,t,r,e,n){const o=r?r+i:i,s=e?e+t:t;getStat(o,e=>{e.isFile()?handleFile(o,s,n):e.isDirectory()&&readAndMkDir(o,s,e=>{e.forEach(e=>{r?visitDirectory(e,e,o+"/",s+"/",n):visitDirectory(e,e,i+"/",t+"/",n)})})})}function copyFiles(i,t,r){visitDirectory(/\/$/.test(i)?i.substring(0,i.length-1):i,/\/$/.test(t)?t.substring(0,t.length-1):t,"","",r)}module.exports=copyFiles;