| 
				
			 | 
			
			 | 
			@@ -33,6 +33,13 @@ const fs = require('fs') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			const cliargs = utils.cliargs; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			const processedArgs = cliargs(process.argv.slice(2)); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			console.dir(processedArgs) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// PB : TODO -- defaults for valuless arguments if passed. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// Object.keys(processedArgs).forEach(a=>{ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			//   if(Object.prototype.toString.call(processedArgs[a]) === '[object Undefined]' || !processedArgs[a]) || trim(processedArgs[a])) == '') { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			//   } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var globSync = require('glob').sync; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			var ENV = Object.assign({}, process.env); // Shallow clone it. | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -93,12 +100,15 @@ var getTaskWithElevation = function(tasdef){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    else { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // PB : TODO -- Rename op['runas'] to 'elevate' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return op['runas']().then(() => { return true; }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var __runasresult = null; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return op['runas']().then((r) => { return __runasresult = r; }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        .catch((e) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          console.error(e) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        .finally(() => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          fs.unlinkSync('run.done')  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          if(__runasresult && !__runasresult.skipped) fs.unlinkSync('run.done') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          if (!processedArgs.runas) {  return tasdef.regularpulltasks(); } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -139,7 +149,11 @@ var getPullCmd = (repo, branch) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  else { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    console.warn('No branch was specified detecting from working client.') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var pullCmd = gitops.getdiscoverbranchcmd(repo) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // First check if working client exits. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // if (existsSync(instanceroot + '/' + repo)) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var pullCmd = gitops.getdiscoverbranchcmd(repo) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // else performpull | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // var pullCmd = ['pullall', [], { cwd : repo }] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  if (useGitPull) pullCmd = ['git', ['pull'], { | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -388,6 +402,9 @@ var op = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'runas': () => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(processedArgs.skipelevated) return Promise.resolve({ skipped : true }); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    console.log('Testing Elevation') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (__isElevated) { | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -525,6 +542,40 @@ var op = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // git remote equivalents... | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // git branch --set-upstream-to=elixir-unc/master master | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  // git push --set-upstream elixir-unc branch.. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'remote': (args) => {  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Subcommands! | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if(!processedArgs.v) return false; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var serial_perform = (repo) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var options = { cwd: instanceroot + '/' + repo } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return [ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        ['git', ['remote', '-v'], options] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      ] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var x = (args) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var tasq = () => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // console.log(args) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return nodeShellExec.apply(null, args).catch(e => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          // We continue on failure. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          console.error(tasq.toString()) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      tasq.toString = function(){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return JSON.stringify(args) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return tasq; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var perform = (dir) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return any(serial_perform(dir.name).map(x)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    dirs(perform) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'remote set-url': (args) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // git remote set-url elixir-unc //10.10.5.60/gitrepo/chess/bbhverse | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var __args = { | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -572,7 +623,7 @@ var op = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var perform_git_seturl = (dir) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      op['is-git-repo'](dir).then((logEntry) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        any(serial_perform_git_seturl(dir.name).map(x)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return any(serial_perform_git_seturl(dir.name).map(x)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      }).catch((e) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // console.log('Failed : ' + dir.name) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      }) | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -959,7 +1010,7 @@ var op = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Usage : | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // elxr pull -- Defaults to run config | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return elxr.getpulltask()() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return elxr.getpulltask(selectedinstance)() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , 'isInstalled': () => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return nodeShellExec('where', [processedArgs._[1]], { inherit: true }).then(() => { | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1642,11 +1693,18 @@ var elxr = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  , getpulltask(def){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    def = def || { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    def = (def ? ( | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        def.requiresElevation = true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        def.reqularRepos = def.repos, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        def.elevatedRepos = def.elevatedRunasRepos | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      ) : false) || { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      requiresElevation : true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      reqularRepos : gitRepos, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      elevatedRepos : elevatedRunasRepos | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    console.log(`-------------------Processing pull for : ${def.repo} ${def.branch}`) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    console.dir(def) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1708,7 +1766,7 @@ function preworkerconfig(){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			// The main elxr cli process | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			function elxrworker() { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  var subcommandlabels = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    remote : `remote ${processedArgs._[1]}` | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    remote : (`remote ${processedArgs._[1] || ''}`).trim() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  var __runcmd = function (label) { | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1741,16 +1799,16 @@ function acquireChoices(selectedinstance) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			Warning : Cannot locate your preferred configuration since it was not specified | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			You should fork the default chess configuration to customize and make it  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			your own instance with a named config as  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  {{yourowninstancename}}-config-{{yourcurrentenvironment}}  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  {{yourowninstancename}}-config-{{yourchosenenvironment}}  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			And then run this tool as follows | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  NODE_ENV={{yourenvironment}} elxr i {{yourowninstancename}}  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  NODE_ENV={{yourchosenenvironment}} elxr i {{yourowninstancename}}  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			OR | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			Run this tool with the following command to use a quick start default. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			node elxr --default | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  elxr --default | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			OR | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			Choose the the option to create a new instance for you interactively. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			Choose one of the options below to run interactively. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			We will run your choice of default or create your own at the next prompt. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			We will run your choice at the next prompt. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			------------------------------------------------------------------------------- | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  `)) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  var prompt = cli.prompter; | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1767,7 +1825,6 @@ We will run your choice of default or create your own at the next prompt. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      q) Quit | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        Default <= d | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    : `).then((choice) => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    prompt.close(); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (choice && choice === 'd' || !choice) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      processedArgs._[0] = 'i' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      selectedinstance.instanceName = processedArgs._[1] = processedArgs._[1] || 'chess' | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1796,7 +1853,6 @@ We will run your choice of default or create your own at the next prompt. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          return p1.ask(`Enter preferred repo server ( <= ${selectedinstance.reposerver || selectedinstance.reposervers[0]} ) : `).then(function (reposerver) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            p1.close() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            selectedinstance.reposerver = reposerver || selectedinstance.reposervers[0] || 'https://git.bbh.org.in' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }) | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1817,7 +1873,6 @@ We will run your choice of default or create your own at the next prompt. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            else processedArgs._[0] = cmd | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return p1.ask(`Enter preferred repo server ( <= ${selectedinstance.reposerver || selectedinstance.reposervers[0]} ) : `).then(function (reposerver) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              selectedinstance.reposerver = reposerver || selectedinstance.reposervers[0] || 'https://git.bbh.org.in' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              p1.close() | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }) | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1844,6 +1899,7 @@ var acquireConfig = function (selected, chessinstances) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    chessinstances['current_run'] = { instanceName: selected.instanceName, node_env: selected.node_env } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Config from server always override merges into selection ecept for the current selection. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    selectedinstance = utils.assign(chessinstances[selected.instanceName][selected.node_env], selected, repomanifest) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // chessinstances[selectedinstance.instanceName][selectedinstance.node_env] = selectedinstance; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    fs.writeFileSync(instanceroot + '/chessinstances.js', 'module.exports = ' + JSON.stringify(chessinstances, null, 2) + '', { 'flag': 'w' }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // PB : TODO -- We should probably write the new server config also... | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    selectedinstance.reposerver = selectedinstance.reposerver || selectedinstance.reposervers[0] // PB : TODO -- Attempt first one that is available and online... | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1929,7 +1985,8 @@ var __interactve_promts = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      Object.defineProperty(this, 'reposerver', { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        value: reposerver, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        writable: false, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        configurable : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        configurable : true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        enumerable : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      }); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return reposerver | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }) | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1938,7 +1995,8 @@ var __interactve_promts = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    Object.defineProperty(this, 'reposerver', { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      value: reposerver, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      writable: false, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      configurable : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      configurable : true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      enumerable : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    }); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return reposerver | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -1969,7 +2027,7 @@ var prerequisites = [ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          () => prompt.ask(`git user name : ( <= ${gitUser} )`).then((user) => { gitUser = user; }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        , () => prompt.ask(`git email : ( <= ${gitEmail} )`).then((email) => { gitEmail = email; }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      ] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return any([any(steps), any(prompts)]).then(() => { prompt.close() }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return any([any(steps), any(prompts)]) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    , installsteps: function () { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      return any([this.installcmd].map(callsheltask)) | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -2186,7 +2244,8 @@ var getPromptableAsyncPropDescriptor = function(propName, choices, defaultchoise | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        Object.defineProperty(this, propName, { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          value: propValue, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          writable: false, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          configurable : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          configurable : true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          enumerable : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        return propValue | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      }) | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -2195,11 +2254,13 @@ var getPromptableAsyncPropDescriptor = function(propName, choices, defaultchoise | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    //   Object.defineProperty(this, propName, { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    //     value: propValue, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    //     writable: false, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    //     configurable : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    //     configurable : true, | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    //     enumerable : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    //   }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    //   return propValue; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    , configurable : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    , enumerable : true | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			} | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -2285,56 +2346,66 @@ acquireElevationState().then(() => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    selectedinstance = Object.assign(detectedInstance, clioverrides); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var todo = Promise.resolve(true); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var promptkeys = { 'instanceName' : processedArgs._[1] }  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var reconfirm = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      'instanceName' : selectedinstance['instanceName'] === 'chess' | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var prompts = []; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    var eachPrompt = function(k, i, a){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // No local instances config found. We use a default initialized instance available in selectedinstance | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // Confirm those that were not supplied as user choices in runtime args and proceed to reattempt. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      if(promptkeys[k] && selectedinstance[k] !== promptkeys[k] || promptkeys[k] === undefined && selectedinstance[k] === undefined  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        || reconfirm[k]) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        prompts.push(async ()=>{  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          // PB : NOTE -- Important in async cases when this needs to be in the same state as when it was invoked. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            // We take a snapshot... Shallow.. !! If required deep should be used based on use case.  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            // If latest altered state is required we can reerence this directly. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          // var asyncthis = Object.assign(this);  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          Object.defineProperty(selectedinstance, k, getPromptableAsyncPropDescriptor(k, choices[k], promptkeys[k] || selectedinstance[k] )); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          return await selectedinstance[k]  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      delete promptkeys[k] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    try { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      chessinstances = acquirelocalinstances(selectedinstance); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      initinstances(chessinstances, selectedinstance) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    catch (e) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      console.error(e) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // Basic keys that must be prompted and confirmed if not supplied as cmd line args. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // PB: TODO --- This should be cmd specific interpretation of location parameters !!! | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var promptkeys = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        'instanceName' : processedArgs._[1]  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      }  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var reconfirm = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        'instanceName' : true  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var instanceNameChoices = new Set(Object.keys( chessinstances) ) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      instanceNameChoices.delete('current_run') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      instanceNameChoices.add(selectedinstance['instanceName']) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      if(promptkeys['instanceName']) instanceNameChoices.add(promptkeys['instanceName']) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var choices = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          'instanceName' : Array.from(instanceNameChoices) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        , 'reposerver' : selectedinstance['reposervers'] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      Object.keys(__interactve_promts).forEach(eachPrompt, __interactve_promts) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      Object.keys(promptkeys).forEach(eachPrompt, promptkeys) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      todo = any(prompts).then(()=>{ return selectedinstance }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    catch (e) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      console.error(e) // Missing chessinstances is not an error... | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // No local instances config found. We use a default initialized instance available in selectedinstance | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      // Confirm those that were not supplied as user choices in runtime args and proceed to reattempt. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      initinstances(chessinstances, selectedinstance) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var instanceNameChoices = new Set(Object.keys( chessinstances) ) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      instanceNameChoices.delete('current_run') | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      instanceNameChoices.add(selectedinstance['instanceName']) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      instanceNameChoices.add(promptkeys['instanceName']) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			 | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      if(promptkeys['instanceName']) instanceNameChoices.add(promptkeys['instanceName']) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var choices = { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          'instanceName' : Array.from(instanceNameChoices) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        , 'reposerver' : selectedinstance['reposervers'] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var prompts = []; | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      var eachPrompt = function(k, i, a){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        if(selectedinstance[k] !== promptkeys[k] || promptkeys[k] === undefined || reconfirm[k]) { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          prompts.push(async ()=>{  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            // PB : NOTE -- Important in async cases when this needs to be in the same state as when it was invoked. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              // We take a snapshot... Shallow.. !! If required deep should be used based on use case.  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			              // If latest altered state is required we can reerence this directly. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            // var asyncthis = Object.assign(this);  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            Object.defineProperty(selectedinstance, k, getPromptableAsyncPropDescriptor(k, choices[k], promptkeys[k] || selectedinstance[k] )); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			            return await selectedinstance[k]  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			          }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        delete promptkeys[k] | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
  | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      Object.keys(__interactve_promts).forEach(eachPrompt, __interactve_promts) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      Object.keys(promptkeys).forEach(eachPrompt, promptkeys) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			         | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -2342,7 +2413,7 @@ acquireElevationState().then(() => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			       | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      if(!processedArgs._[0] || !selectedinstance.node_env || !selectedinstance.instanceName){ | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        // Weve been told what to do. | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        todo = acquireChoices(selectedinstance) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			        todo = todo.then(() => { return acquireChoices(selectedinstance) }) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      } | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			   | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			      todo = todo.then(() => { | 
		
		
	
	
		
			
			| 
				
			 | 
			
			 | 
			@@ -2400,7 +2471,7 @@ acquireElevationState().then(() => { | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    // Currently it retains 2*n when proc needs to be relaunched in elevated mode !!! | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    ensureDirectoryExistence(`${selectedinstance.root}/.elxr/run-${runtimestamp}/download.bat`) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			     | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (!skipprerequisites && !__isElevated) mainTasks.push(verifyAndInstallPrerequisites); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    if (!skipprerequisites && !__isElevated || processedArgs.forceprereqs && !__isElevated ) mainTasks.push(verifyAndInstallPrerequisites); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    mainTasks.push(maintask) | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			    return any(mainTasks); | 
		
		
	
		
			
			 | 
			 | 
			
			 | 
			  }) |