| 
				
			 | 
			
			 | 
			@@ -84,18 +84,26 @@ function any(iterable, continueOnFailure) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  ); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var __isElevated = null; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var isRunningElevated = ()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return nodeShellExec( "fsutil", ["dirty", "query", "C:"], {  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      inherit : true, shell: true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            , env: process.env | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            , title : `check privileged execution mode using fsutil dirty query C:` | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }).then((exitcode)=>{     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      console.log('Elevated') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return true; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }).catch(()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      console.log('Not Elevated'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      throw false; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(__isElevated === null) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return nodeShellExec( "fsutil", ["dirty", "query", "C:"], {  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        inherit : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // , shell: true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          // , stdio: 'ignore' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          , env: process.env | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          , title : `check privileged execution mode using "fsutil dirty query C:"` | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      }).then((exitcode)=>{     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        console.log('Elevated') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        __isElevated = true; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return true; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      }).catch(()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        __isElevated = false; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        console.log('Not Elevated'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        throw false; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      }); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    else return Promise.resolve(__isElevated); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -130,7 +138,7 @@ var gitRepos = [ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'elixir-client-unlinked' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'ember-searchable-select' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'loopback-component-jsonapi' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'elixir-config' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'elixir-config-development' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'cihsr-config' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'cihsr-data' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'elixir-data' | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -147,12 +155,16 @@ var elevatedRunasRepos = [ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'chess-server'  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var productionRepos = [ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    'elixir-config-production' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var env = Object.assign({}, process.env); // Shallow clone it. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var __runcmd = function(label){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  var op = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      'h' : ()=>{ console.log(cli + ' ' + ver + ' ' + help); return '-h' } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    , 'undefined' : ()=>{ return op.h(); } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    , 'upgrade' : ()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      console.log('upgrade.......') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var tasks = [ | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -229,19 +241,48 @@ var __runcmd = function(label){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    , 'runas' : ()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return isRunningElevated().then( | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        () => op[ processedArgs.label || processedArgs._[0] || 'h']() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        (isElevated) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          if(isElevated)  { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            try {  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              op[ processedArgs.label || processedArgs._[0] || 'h']() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            catch(e){  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              console.error('Error Invalid command : ' + e)  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              fs.writeFileSync('run.done', 'success') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            finally { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          } else throw false; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      ) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      .catch(()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        console.log('Not Elevated'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        console.log('Requesting Elevated Privileges') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        nodeShellExec('MSHTA', [`javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('node', 'elxr ${processedArgs._[0]} ${processedArgs._[1]} ${processedArgs._[2]} --runas=true', '', 'runas', 1);close();`] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        console.log('Not Elevated Requesting Elevated Privileges'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // Wait for the runas to complete before we read it. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        try { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          fs.unlinkSync('run.done') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          fs.unlinkSync('run.log') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        catch(e) { } //Ignore  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        var args = [__dirname + '/windowselevate.hta'].concat(processedArgs._); args.push('--runas') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        nodeShellExec('MSHTA', [`"${args.join('" "')}"`] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          , { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            // inherit : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            // , shell: true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            env: process.env | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            inherit : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            ,  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            shell: true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            // ,  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            , env: process.env | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            , runas : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            , title : `runas` | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ).then(()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          // runas returned. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          var runaslog = JSON.parse('[ { "success" : true, "result" : "runas Log" }' + fs.readFileSync('run.log', { flags : 'a+'}) + ']'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          runaslog.forEach((logEntry)=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            logEntry.succes ? (console.log(['success :' + logEntry.result]), console.log((logEntry.messages || []).join(' '))) : console.error(['error :' + logEntry.result]), console.error((logEntry.messages || []).join(' ')) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        .catch(err => console.error('Elevation failed : ' + err)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    , 'push' : ()=>{ | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -326,19 +367,21 @@ var __runcmd = function(label){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var performPull = repo => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if(existsSync(repo)) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          console.log('pulling ' + repo) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          nodeShellExec('git', ['pull'], { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          return nodeShellExec('git', ['pull'], { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            inherit : true, shell: true,  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            cwd : repo | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            // , env: process.env | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            , runas : processedArgs.runas | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            , title : `git pull ${repo}` | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          }).catch((e)=>{ console.error(e) })  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        else { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          console.log('cloning ' + repo) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          nodeShellExec('git', ['clone', '//172.16.0.27/repos/' + repo + '.git'], | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          return nodeShellExec('git', ['clone', '//172.16.0.27/repos/' + repo + '.git'], | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            inherit : true, shell: true,  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              env: process.env | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            , runas : processedArgs.runas | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            , title : `git clone ${'//172.16.0.27/repos/' + repo + '.git'}` | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          }).catch((e)=>{ console.error(e) })  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -346,11 +389,21 @@ var __runcmd = function(label){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      if(!processedArgs.runas) gitRepos.forEach(performPull) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return isRunningElevated().then(  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ()=> elevatedRunasRepos.forEach(performPull)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      .catch( | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        () => op['runas']() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        (isElevated) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          if(isElevated) {  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            any(elevatedRunasRepos.map((repo)=>performPull(repo))).then(()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              fs.writeFileSync('run.done', 'success') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }).catch(()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              fs.writeFileSync('run.done', 'error') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          }  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          else throw false; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      ).catch( | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        () => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          op['runas']()  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      ) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    , 'npmi' : ()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var tasks = []; | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -569,7 +622,7 @@ var __runcmd = function(label){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        g[processedArgs._[1]](); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  return op[label] ? op[label]() : op['start'](label); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  return op[label] ? op[label]() : null; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			}  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// mysqldump --add-drop-table --no-data -u root -p db_name | grep 'DROP TABLE' ) > drop_all_tables.sql | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -578,34 +631,43 @@ var __runcmd = function(label){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var mysql = '../xampp/mysql/bin/mysql' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var mysqldump = '../xampp/mysql/bin/mysqldump' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			__runcmd(processedArgs.label || processedArgs._[0] || 'h'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// nodeShellExec('git', ['status']); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// --runas | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			if(processedArgs.runas) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // Weve been asked to run in priviledged mode. Check if we already are privileged. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  __runcmd('runas') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			else __runcmd(processedArgs.label || processedArgs._[0] || 'h'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			function nodeShellExec() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var args = Array.from(arguments); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    args[2] ? null : args[2] = {} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    args[2].title ? null : args[2].title = `${args[0]} ${args[1]}` | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var opts = args[2] = args[2] || {} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    opts.title ? null : opts.title = `${args[0]} ${args[1]  }` | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    const child = spawn(...arguments); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var p = new Promise(function(resolve, reject){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      if(!args[2].detached) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      if(!opts.detached) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        var messages = []; // PB : TODO -- Explore stream for Task level  aggregation to prevent interleaved messages from multiple tasks... | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        var succes = true; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // use child.stdout.setEncoding('utf8'); if you want text chunks | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        child.stdout.setEncoding('utf8'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        child.stderr.setEncoding('utf8'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        child.stdout.on('data', (chunk) => { messages.push(chunk); /*console.log(chunk)*/}); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        child.on('error', (chunk) => { messages.push(chunk); /*console.error(chunk)*/ }); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        child.on('error', (chunk) => { succes = false; messages.push(chunk); /*console.error(chunk)*/ }); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        child.stderr.on('data', (chunk) => { messages.push(chunk); /*console.log(chunk)*/}); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // child.stderr.pipe(process.stderr); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        child.on('close', (code) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			           | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          console.log([` ${args[2].title} exited with code ${code}`]) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          // console.log([ messages.join('') ]) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          process.stdout.write( messages.join('') ) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          if(code !== 0 ) return reject(code) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          if(code !== 0) succes = false; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          if(opts.runas){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            fs.writeFileSync('run.log', ', ' + JSON.stringify({ result: ` ${opts.title} exited with code ${code}`, messages : messages }), {'flag':'a+'} ) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          else { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            succes ? console.log(['success : ' + ` ${opts.title} exited with code ${code}`]) : console.error([`error : ${opts.title} exited with code ${code}`]) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            // console.log( messages.join('') ) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            process.stdout.write( messages.join('') ) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          if(code !== 0) return reject(code) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          resolve(true) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } |