| 
				
			 | 
			
			 | 
			@@ -22,7 +22,10 @@ var globSync = require('glob').sync; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var path = require('path'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			const { isMaster } = require('cluster'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// Serialize a set of functions that will execute to return a promises one after the other. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// Will stop when any one fails. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// Will stop when any one fails unless continueOnFailure is true. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// All tasks in iterables can be functions or promises.  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// promises as usual can return other promises or resolve to either truthy or falsy values. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// functions must return a promise  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			function any(iterable, continueOnFailure) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  return iterable.reduce(  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      (p, fn, i ,a) => { | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -37,53 +40,41 @@ function any(iterable, continueOnFailure) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  // console.log('Then --pVal = ' + pVal + ' bContinue = ' +  continueOnFailure ); console.log(p);   | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  if(!pVal && !continueOnFailure) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    console.error("E : pVal :" + pVal); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    // i==0 ? null :  console.error("E :1 a[i-1] " + a[i-1]); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    // a.map((i)=>console.error(i.toString())); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    console.error('debugData 3 -------------------'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    // console.error(debugData); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    console.error('debugData 3 -------------------'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    console.error(`E1 : i = ${i} : pVal :` + pVal); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    console.error('debugData 2 -------------------'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    console.log("Cancelling remaining..."); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    throw 'Failed in reduce 1 ' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                    return false;  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  // console.log('calling fn : '+ fn);                  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  if(!fn && !continueOnFailure) { console.error('Error : No task specified.'); throw false;} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  else if(!fn) return false; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  return (Promise.resolve(fn) === fn ) ? fn : fn() ; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              else { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                // We will stop on null resolved values on any one task unless continueOnFailure is true. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                // console.log('Then --pVal = ' + pVal + ' bContinue = ' +  continueOnFailure ); console.log(p);   | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if(!pVal && !continueOnFailure) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  console.error("E : pVal :" + pVal); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  // i==0 ? null :  console.error("E :1 a[i-1] " + a[i-1]); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  // a.map((i)=>console.error(i.toString())); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  console.error('debugData 3 -------------------'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  // console.error(debugData); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  console.error('debugData 3 -------------------'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  console.error(`E2 : i = ${i} : pVal :` + pVal); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  console.error('debugData 2 -------------------'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                   | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  console.log("Cancelling remaining..."); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  throw 'Failed in reduce 1 ' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  return false;  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  throw 'Failed in reduce 2 ' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                // console.log('calling fn : '+ fn);                  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                if(!fn && !continueOnFailure) { console.error('Error : No task specified.'); throw false;} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                else if(!fn) return false; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                return (Promise.resolve(fn) === fn ) ? fn : fn() ; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			               | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			               | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }).catch((error) => {  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              console.error("E : " + error); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              console.error(`E3 : i = ${i} `); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              fn ? console.error("Fn : " + fn.toString()) : null; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              // i==0 ? null :  console.error("E :2 a[i-1] " + a[i-1]); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              // a.map((i)=>console.error(i.toString())); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              console.error('debugData 4-------------------------'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              // console.error(debugData); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              console.error('debugData 4-------------------------'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              throw 'Failed in reduce 2 '               | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              return false;  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              console.error('debugData 3-------------------------'); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              throw 'Failed in reduce 3 '               | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            })  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          else if(!p) { | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -376,6 +367,9 @@ var __runcmd = function(label){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    , 'pull' : (label) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // Usage : | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // elxr pull -- Defaults to run config | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var env = Object.assign({}, process.env); // Shallow clone it. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // console.dir(env) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      console.log('Running exlr pull : ' + path.dirname(__dirname)) | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -586,6 +580,7 @@ var __runcmd = function(label){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return nodeShellExec('git', ['checkout', checkoutMap[runconfig.NODE_ENV] || runconfig.NODE_ENV], { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          inherit : true, shell: true,  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          cwd : repo | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          , runas : processedArgs.runas | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }).catch((e)=>{ console.error(e) })  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -604,9 +599,10 @@ var __runcmd = function(label){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return nodeShellExec('git', ['merge', mergeSource], { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          inherit : true, shell: true,  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          cwd : repo | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          , runas : processedArgs.runas | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }).catch((e)=>{ console.error(e) })  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      if(runconfig.NODE_ENV === 'development') performMerge = ()=>{} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      if(runconfig.NODE_ENV === 'development') performMerge = ()=>{ return Promise.resolve(true) } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      any(tasks).then(()=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if(!processedArgs.runas) return op['runas']()  | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -638,8 +634,8 @@ var __runcmd = function(label){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return any(tasks.concat([ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          any(gitRepos.map((repo)=>performCheckout(repo))), | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          any(elevatedRunasRepos.map((repo)=>performCheckout(repo))), | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          any(gitRepos.map((repo)=>performMerge(repo))), | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          any(elevatedRunasRepos.map((repo)=>performMerge(repo))), | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          any(gitRepos.map((repo)=>performMerge(repo))).catch(err=>{ console.error('error in performMerge ' + err)}) , | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          any(elevatedRunasRepos.map((repo)=>performMerge(repo))).catch(err=>{ console.error('error in performMerge ' + err)}) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          , () => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            // Move test config from dev. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            if(process.env.NODE_ENV === 'test'){ | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -670,7 +666,7 @@ var __runcmd = function(label){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                }).catch((e)=>{ console.error(e) }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              ) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              Promise.all(promises).then(()=> { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              return Promise.all(promises).then(()=> { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                globSync( '**/*.test.js', {cwd : devcfgdir}).map((filename) => {     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			                  console.log('File found : ' + devcfgdir + filename)        |