@vroomlabs/gsdk-deploy
Version:
Google Cloud deployment script for kubernetes clusters using Global Load Balancer
77 lines (42 loc) • 2.18 kB
JavaScript
;
/**
* Created by rogerk on 7/3/17.
*/Object.defineProperty(exports,'__esModule',{value:true});exports.
exec=exec;var _child_process=require('child_process');var child=_interopRequireWildcard(_child_process);var _logger=require('../util/logger');function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key]}}newObj.default=obj;return newObj}}function logOutputProc(level){var currentLine='';level=level===true?'debug':level;if(level==='none')return function(){};return function(data){//eof
if(data===null){if(currentLine)data='\n';else return}data=data.toString().split('\n');data[0]=currentLine+data[0];for(var ix=0;ix<data.length-1;ix++){if(data[ix].replace(/[+=_|#\.\-]+/g,'').length>0){_logger.logger[level](data[ix])}}currentLine=data[data.length-1]}}/**
* @param {string} command - console command line
* @param {object=} options - cwd: string, env: object, direct: string
* @returns {Promise}
*/function exec(command,options){options=options||{};var args=command.split(/\s+/);var exe=args[0];args=args.splice(1);
var stdout=Buffer.alloc(0);
var opts={};
if(options.cwd){opts.cwd=options.cwd}
if(options.env){opts.env=options.env}
options.stdout=options.stdout||(options.direct?logOutputProc(options.direct):function(){});
options.stderr=options.stderr||logOutputProc(options.direct||'error');
return new Promise(function(resolve,reject){
_logger.logger.verbose(command);
var cmd=child.spawn(exe,args,opts);
cmd.stdout.on('data',function(data){
options.stdout(data.toString());
stdout=Buffer.concat([stdout,data]);
});
cmd.stderr.on('data',function(data){
options.stderr(data.toString());
});
cmd.on('exit',function(code){
options.stdout(null);
options.stderr(null);
if(code!==0){
var err=new Error('Failed to execute cmd ('+code+'): '+command+'.');
err.stdout=stdout.toString();
err.exitCode=code;
_logger.logger.verbose(err);
return reject(err);
}
stdout=stdout.toString('utf-8',0,stdout.length-(
stdout[stdout.length-1]==='\n'.charCodeAt(0)?1:0));
return resolve(stdout);
});
});
}