Plato on Github
Report Home
lib/task.js
Maintainability
79.58
Lines of code
51
Difficulty
17.00
Estimated Errors
0.26
Function weight
By Complexity
By SLOC
"use strict"; import async from 'async'; import fs from 'fs'; import p from 'path'; import util from 'util'; /** * Load Bob task files in parallel. * Only task files in specified taskNames will be loaded. * * @param {Array} taskNames: an array of task names * @param {String} dir: base directory where task files are located * @param {Function} cb: standard cb(err, result) callback */ function load(taskNames, dir, cb) { const jobs = {}; taskNames.forEach((taskName) => { jobs[taskName] = function (cb) { const file = p.join(dir, taskName + '.json'); fs.access(file, fs.constants.F_OK, (err) => { if (err) { const _err = new Error(util.format('Unknown command: %s, use --help for more info', taskName)); cb(_err); } else { fs.readFile(file, cb); } }); }; }); function parse(err, results) { if (!err) { Object.keys(results).forEach((taskName) => { results[taskName] = JSON.parse(results[taskName]); }); } cb(err, results); } async.parallel(jobs, parse); } const exports = { load: load }; export { exports as default };