UNPKG

typescript-assistant

Version:

Combines and integrates professional Typescript tools into your project

76 lines 2.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const child_process_1 = require("child_process"); const readline_1 = require("readline"); const kill = require("tree-kill"); let strip = (line) => /^\s*(.*?)\s*$/m.exec(line)[1]; exports.createDefaultTaskRunner = () => { return { runTask: (command, args, config) => { let loggerCategory = config.name; let logger = config.logger; logger.log(loggerCategory, `running command ${command} ${args.join(' ')}`); let task = child_process_1.spawn(command, args); let stdout = readline_1.createInterface({ input: task.stdout }); stdout.on('line', line => { line = strip(line); if (!line) { return; } let handled = false; if (config.handleOutput) { handled = config.handleOutput(line); } if (!handled) { logger.log(loggerCategory, line); } }); let stderr = readline_1.createInterface({ input: task.stderr }); stderr.on('line', line => { line = strip(line); if (!line) { return; } let handled = false; if (config.handleError) { handled = config.handleError(line); } if (!handled) { logger.error(loggerCategory, line); } }); let result = new Promise((resolve, reject) => { task.on('close', (code) => { if (code === 0 || code === null) { resolve(); } else { reject(`Process exited with code ${code}`); } }); }); return { result, kill: () => { kill(task.pid); } }; } }; }; exports.createWindowsTaskRunner = () => { let delegate = exports.createDefaultTaskRunner(); let translateToWindows = (command) => { if (command.charAt(0) === '.') { // we just assume it is something from the ./node_modules/.bin/ folder command += '.cmd'; } return command.replace(/\//g, '\\'); }; return { runTask: (command, args, config) => { return delegate.runTask(translateToWindows(command), args, config); } }; }; //# sourceMappingURL=taskrunner.js.map