serverless/lib/plugins/run/utils/manageLocalEmulator.js
2017-08-12 16:49:24 -07:00

45 lines
1.3 KiB
JavaScript

'use strict';
const BbPromise = require('bluebird');
const _ = require('lodash');
const childProcess = BbPromise.promisifyAll(require('child_process'));
const getLocalRootUrl = require('./getLocalRootUrl');
const deployFunctionsToLocalEmulator = require('./deployFunctionsToLocalEmulator');
const logServerless = require('./logServerless');
const logLocalEmulator = require('./logLocalEmulator');
function manageLocalEmulator(service, servicePath, options) {
let initialized = false;
const { port, debug } = options
let params = ['--port', port]
if (debug) {
params = params.concat(['--debug'])
logServerless('Spinning Up the Local Emulator in debug mode');
} else {
logServerless('Spinning Up the Local Emulator');
}
const cp = childProcess.spawn('sle', params);
cp.stdout.on('data', stdout => {
logLocalEmulator(stdout.toString('utf8'));
if (!initialized) {
initialized = true;
return deployFunctionsToLocalEmulator(service, servicePath,
getLocalRootUrl(port));
}
return BbPromise.resolve();
});
cp.stderr.on('data', stderr => {
logLocalEmulator(stderr.toString('utf8'));
});
cp.on('close', () => BbPromise.resolve());
cp.on('error', error => BbPromise.reject(error));
process.on('exit', () => cp.kill());
}
module.exports = manageLocalEmulator;