Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 4x 4x 4x 4x 4x 4x 4x 4x 3x 2x 2x 3x 4x 4x 4x 3x 2x 2x 3x 4x 4x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 1x 1x 1x 1x 1x 1x 1x 1x 1x | "use strict" import async from 'async'; import child from 'child_process'; import fs from 'fs'; import mkdirp from 'mkdirp'; import p from 'path'; /** * Execute a single command. * * @param {String} command: the command to execute * @param {Object} opts: * - cwd: base directory where the commands should be executed from * - quiet: don't display command output if quiet * - task: Bob task name, used to create output directory * - type: Bob task type name, used to create output directory * - dir: report directory where process output will be written into a file * @param {Function} cb: standard cb(err, result) callback */ function exec(command, opts, cb) { console.log('%s | %s', opts.task.cyan, command); const cproc = child.exec(command, opts, cb), wstream = fs.createWriteStream(p.join(opts.dir, opts.type + '.txt')); cproc.stdout.on('data', (data) => { if (!opts.quiet) { process.stdout.write(data); } wstream.write(data); }); cproc.stderr.on('data', (data) => { if (!opts.quiet) { process.stderr.write(data); } wstream.write(data); }); } /** * Execute multiple commands in series. * * @param {Array} commands: an array of commands, each command contains: * - exec: executable command line, to be executed on shell * - meta: command metadata, task and type * @param {Object} opts: * - cwd: base directory where the commands should be executed from * - quiet: don't display command output if quiet * @param {Function} cb: standard cb(err, result) callback */ function execSeries(commands, opts, cb) { function _exec(command, cb) { const dir = p.join(opts.cwd, '.bob', command.meta.task); mkdirp.sync(dir); opts.task = command.meta.task; opts.type = command.meta.type; opts.dir = dir; exec(command.exec, opts, cb); } async.eachSeries(commands, _exec, cb); } const exports = { exec: exec, execSeries: execSeries }; export { exports as default }; |