Plato on Github
Report Home
lib/task.js
Maintainability
79.58
Lines of code
53
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 };