js/lib/utilities.js
function (dir, search, excludedDirs) {
        excludedDirs = excludedDirs || [];

        var result = [];
        var files = fs.readdirSync(dir);
        for (var i = 0; i < files.length; i++) {
            var fullpath = path.join(dir, files[i]);
            var stat = fs.statSync(fullpath);
            if (stat.isDirectory() && (!excludedDirs.contains(fullpath))) {
                result = result.concat(utilities.recursiveFindFiles(fullpath, search));
            }
            else if (!search || (fullpath.indexOf(search) >= 0)) {
                result.push(fullpath);
            }
        }
        return result;
    }
function (dir, search, excludedDirs) {
        excludedDirs = excludedDirs || [];

        var result = [];
        var files = fs.readdirSync(dir);
        for (var i = 0; i < files.length; i++) {
            var fullpath = path.join(dir, files[i]);
            var stat = fs.statSync(fullpath);
            if (stat.isDirectory() && (!excludedDirs.contains(fullpath))) {
                result = result.concat(utilities.recursiveFindFiles(fullpath, search));
            }
            else if (!search || (fullpath.indexOf(search) >= 0)) {
                result.push(fullpath);
            }
        }
        return result;
    }
function ( dir , search , excludedDirs ) { excludedDirs = excludedDirs || [ ] ; var result = [ ] ; var files = fs . readdirSync ( dir ) ; for ( var i = 0 ; i < files . length ; i ++ ) { var fullpath = path . join ( dir , files [ i ] ) ; var stat = fs . statSync ( fullpath ) ; if ( stat . isDirectory ( ) && ( ! excludedDirs . contains ( fullpath ) ) ) { result = result . concat ( utilities . recursiveFindFiles ( fullpath , search ) ) ; } else if ( ! search || ( fullpath . indexOf ( search ) >= 0 ) ) { result . push ( fullpath ) ; } } return result ; }
recursively create a list of all files in a directory and all subdirectories
@param dir
@param search
@returns {Array}
recursively create a list of all files in a directory and all subdirectories