UNPKG

@tamara027/lerna-terminal

Version:
74 lines (63 loc) 1.98 kB
/* eslint no-console: 0*/ /* eslint complexity: 0*/ 'use strict'; var path = require('path'); var getScriptCommands = require('../getScriptCommands'); var isIgnoredPackage = require('../isIgnoredPackage'); var runNpmScript = require('../runNpmScript'); var _require = require('../getTerminalPanel'), getText = _require.getText; var _require2 = require('../commander'), getProgram = _require2.getProgram; var _require3 = require('../store'), getState = _require3.getState; var render = require('../render'); var parseText = function parseText(text) { // eslint-disable-next-line return text.replace(new RegExp('\x1Bc', 'g'), '').split('\n'); }; /** * @returns {Object} state **/ function runNpmScripts() { var commands = getScriptCommands(); var program = getProgram(); var state = getState(); if (!commands[program.script]) { throw new Error("the given script wasn't found!"); } Object.keys(commands[program.script]).forEach(function (index) { var packagePath = commands[program.script][index]; var packageName = path.basename(packagePath); if (isIgnoredPackage(packagePath, program.ignoredPackages)) { return; } state[packageName] = { log: [] }; state[packageName].terminal = runNpmScript({ scriptName: program.script, packagePath: packagePath, onRecieve: function onRecieve(text) { if (text.search('\x1Bc') >= 0) { state[packageName].log = []; } state[packageName].log = state[packageName].log.concat(getText(parseText(text), 'msg')); render(); }, onError: function onError(text) { if (text.search('\x1Bc') >= 0) { state[packageName].log = []; } state[packageName].log = state[packageName].log.concat(getText(parseText(text), 'error')); render(); }, onExit: function onExit() { state[packageName].log = state[packageName].log.concat(getText('stop: ' + packageName, 'error')); render(); } }); }); return state; } module.exports = runNpmScripts;