Newer
Older
// do file management
const fs = require('fs')
module.exports = {
// get a tree: takes the root (relative the process) and returns all branches below,
// includes route-to-root in list
getDirTree: (dir, debug) => {
return new Promise((resolve, reject) => {
// items and count,
let list = []
let count = 0
// recursor,
let launch = (dir) => {
// just counting actually,
count ++
fs.readdir(dir, (err, files) => {
if(err){
reject(err)
}
count --
try{
for (file of files) {
if (file.includes('.')) {
let listAddition = `${dir.substring(__dirname.length + tld.length)}/${file}`
if(debug) console.log('GDT pushing', listAddition)
list.push(listAddition)
} else {
let launchPoint = `${dir}${file}`
if(debug) console.log('GDT launching', launchPoint)
launch(launchPoint)
}
} catch (err) {
// just walk on ...
console.log('walkover error:', err)
console.log('problem dir:', dir)
// and push up, give up on counting
list.sort()
resolve(list)
}
if(debug) console.log('GDT size', count)
if(!count){
// we sort,
list.sort()
resolve(list)
}
}) // end fs.readdir
} // end launch