return function * (){ barts = barts || (yield fs.readdir(path_to_barts)).map(function(path){ return path.replace(/\.cow$/, ''); }); return selectBart(); };
/** * 获得文件树结构 * */ function* getTree(file){ var files = yield fs.readdir(file); var exts = ['.png', '.gif', '.jpg']; var tree = []; for (var i = 0; i < files.length; i++) { var item = files[i]; var ext = path.extname(item); if (exts.indexOf(ext) !== -1) { tree.push(item); continue; } var dir = path.join(file, item); var stat = yield fs.stat(dir); if (stat.isDirectory()) { var dirs = yield getTree(dir); tree = tree.concat(dirs.map(function(filename){ return item + '/' + filename; })); } } return tree; }
function *list () { var folder = configuration.get("tvshowsFolder"); var downloadedFiles = yield cfs.readdir(folder); var downloadedDirectories = yield filter(downloadedFiles, function* (file) { var stat = yield cfs.stat(path.join(folder, file)); return stat.isDirectory(); }); return downloadedDirectories; }
module.exports = function *() { const strategyDir = yield fs.readdir(gekkoRoot + 'strategies'); const strats = strategyDir .filter(f => _.last(f, 3).join('') === '.js') .map(f => { return { name: f.slice(0, -3) } }); // for every strat, check if there is a config file and add it const stratConfigPath = gekkoRoot + 'config/strategies'; const strategyParamsDir = yield fs.readdir(stratConfigPath); for(let i = 0; i < strats.length; i++) { let strat = strats[i]; if(strategyParamsDir.indexOf(strat.name + '.toml') !== -1) strat.params = yield fs.readFile(stratConfigPath + '/' + strat.name + '.toml', 'utf8') else strat.params = ''; } this.body = strats; }
return function *routes(next){ var app = this.app; var paths = yield fs.readdir(path); paths.forEach(function(file){ if(file.substr(file.lastIndexOf('.') + 1) === 'js'){ var name = file.replace('.js', ''); var methods = require(path + file); (file == 'index.js') ? app.resource('', require(path + file)) : app.resource(name, require(path + file)); } }); this.controllers = Controllers; yield next; }
router.all('/api/files/list',function* (next) { var result = []; var files = yield fs.readdir(path.join(__dirname, '../upload')); for(var i=0;i<files.length;i++) { var file = files[i]; var stat = yield fs.stat(path.join(__dirname, '../upload/'+file)); result.push({ name:file, size:stat.size, date:stat.birthtime }); } this.body = result; });
require('co')(function *() { var fs = require('co-fs') , server_path = __dirname + '/..' , targets = [ server_path + '/model' ]; for (var i = 0; i < targets.length; i++) { var files = yield fs.readdir(targets[i]); for (var n = 0; n < files.length; n++) { if (/\.js$/.test(files[n])) { require(targets[i] + '/' + files[n]); } } } })();
loadTpoNames: function *() { if (cachedTpoNames_) { return cachedTpoNames_; } var files = yield fs.readdir(__dirname + '/data/reading/'); var retFiles = []; files.forEach(function(file) { var fileName = path.basename(file); if (fileName.startsWith('reading_tpo')) { retFiles.push(fileName.substring( 'reading_'.length, fileName.indexOf('.'))); } }); retFiles.sort(compareTpoName_); cachedTpoNames_ = retFiles; return retFiles; },
function * rmdir(dir) { var list = yield fs.readdir(dir); var len = list.length; while (len--) { var filename = path.join(dir, list[len]); var stat = yield fs.stat(filename); if (filename == "." || filename == "..") { // pass these files } else if (stat.isDirectory()) { // rmdir recursively yield rmdir(filename); } else { // rm fiilename yield fs.unlink(filename); } } yield fs.rmdir(dir); };
function *count(dirname) { var files = yield fs.readdir(dirname); for (var i = 0; i < files.length; i++) { var filename = files[i]; var filepath = path.join(dirname, filename); var stat = yield fs.stat(filepath); if (!stat.isFile() && utils.validFolder(filename)) { yield *count(filepath); continue; } if (utils.isJs(filename)) { var content = yield fs.readFile(filepath, 'utf8'); console.log('%s has %d lines', filepath, content.split('\n').length); } } }
module.exports = co.wrap(function* requireAll(folderPath, process) { let allModules = []; let allFiles = yield fs.readdir(folderPath); let jsFiles = []; for(let i=0; i<allFiles.length; i++) { let file = allFiles[i]; if (file.indexOf('.') !== 0 && file.substr(-3)==='.js' && !(yield fs.lstat(path.join(folderPath, file))).isDirectory()) { jsFiles.push(file); } } for(let i=0; i<jsFiles.length; i++) { let file = jsFiles[i]; var moduleName = file.substr(0, file.indexOf('.')); var module = require(path.join(folderPath, moduleName)); if(process) { co.wrap(process)(module); } allModules.push(module); } return allModules; });
*list() { var dirs = yield fs.readdir(this.dir); return dirs.filter((wp) => wp[0] !== '.'); }
co(function*(){ try { port = String(port); var svrDir = path.resolve(config.dir, svrDirName(hostname, port)); server.$socDirs.push([port, svrDir]); var svrDirWatchChan = chan(); yield rmdirRecursive(svrDir); yield mkdirParents(svrDir); var svrDirWatch = fs.watch(svrDir, svrDirWatchChan); dirWatches[svrDir] = svrDirWatch; // #### console.log('creating... %s', getTermName(svrDir)); // #### server.emit('listening'); for (;;) { yield svrDirWatchChan; if (server.$reading) continue; // 連続起動防止 server.$reading = true; var names = yield cofs.readdir(svrDir); for (var i in names) { var name = names[i]; if (!(name in server.$connections)) { var postfix = name.slice(-4); if (postfix === '.tmp') continue; var prefix = name.slice(0,4); // connect request 接続要求 if (prefix === 'con_') { var contents = yield cofs.readFile(path.resolve(svrDir, name)); contents = String(contents); yield cofs.unlink(path.resolve(svrDir, name)); var cli = new FnetSocket(); var socDir = cli.$socDir; yield mkdirParents(path.resolve(config.dir, socDir)); cli.readStart(); server.$connections[socDir] = cli; var file = path.resolve(config.dir, contents, 'ack_' + cli.$no); yield cofs.writeFile(file + '.tmp', socDir); yield cofs.rename(file + '.tmp', file + '.txt'); cli.writeStart(contents); server.emit('connection', cli); continue; } } } // for i in names server.$reading = false; } // for (;;) this.emit('listening'); } catch (err) { throw err; } finally { delete dirWatches[svrDir]; // #### console.log('deleting... %s', getTermName(svrDir)); // #### yield sleep(FINISH_TIMEOUT); if (svrDirWatch) svrDirWatch.close(); yield sleep(FINISH_TIMEOUT); yield rmdirRecursive(svrDir); } })();
co(function*(){ var cliDir = path.resolve(config.dir, soc.$socDir); try { yield mkdirParents(cliDir); var cliDirWatchChan = chan(); var cliDirWatch = fs.watch(cliDir, cliDirWatchChan); dirWatches[cliDir] = cliDirWatch; // #### console.log('creating... %s', getTermName(cliDir)); // #### loop: for (;;) { yield cliDirWatchChan; if (soc.$reading) continue; // 連続起動防止 soc.$reading = true; var names = yield cofs.readdir(cliDir); for (var i in names) { var name = names[i]; var postfix = name.slice(-4); if (postfix === '.tmp') continue; var prefix = name.slice(0,4); var file = path.resolve(cliDir, name); // data received データ受信 if (prefix === 'dat_') { var contents = yield cofs.readFile(file); yield cofs.unlink(file); soc.$readBuffs.push(contents); soc.emit('readable'); continue; } // end/close received 終了受信 if (prefix === 'end_') { yield cofs.unlink(file); if (soc.$readBuffs.length === 0) { soc.emit('end'); break loop; } soc.$readBuffs.push('end'); soc.emit('readable'); break loop; } console.log('cli ? ' + name + ' / ' + cliDir); } // for i in names soc.$reading = false; } // for (;;) } catch (err) { soc.emit('error', err); throw new err; } finally { delete dirWatches[cliDir]; // #### console.log('deleting... %s', getTermName(cliDir)); // #### yield sleep(FINISH_TIMEOUT); if (cliDirWatch) cliDirWatch.close(); yield sleep(FINISH_TIMEOUT); yield rmdirRecursive(cliDir); if (soc.$remotePath) { var remotePath = path.resolve(config.dir, soc.$remotePath); if (dirWatches[remotePath] !== null) console.log('eh? remotePath is not null?'); yield sleep(LONG_TIMEOUT); // #### delete dirWatches[remotePath]; // #### console.log('deleting... %s (2)', getTermName(remotePath)); // #### yield rmdirRecursive(remotePath); } } })();