Skip to content
Snippets Groups Projects
Select Git revision
  • leo
  • dex
  • pendulum
  • master default protected
  • apfelstruder
  • littlerascal
6 results

filesys.js

Blame
  • filesys.js 1.67 KiB
    // 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) => {
        let tld = dir
        return new Promise((resolve, reject) => {
          // items and count,
          let list = []
          let count = 0
          // recursor,
          let launch = (dir) => {
            if (debug) console.log('GDT launch at', 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()
                if(debug) console.log('list at fin getDirTree', list)
                resolve(list)
              }
            }) // end fs.readdir
          } // end launch
          launch(`${__dirname}/${dir}`)
        })
      }
    }