UNPKG

@vroomlabs/gsdk-deploy

Version:

Google Cloud deployment script for kubernetes clusters using Global Load Balancer

77 lines (42 loc) 2.18 kB
'use strict'; /** * 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); }); }); }