|  |  | @@ -14,16 +14,33 @@ var chalk = require('chalk') | 
		
	
		
			
			|  |  |  | const homedir = require('os').homedir(); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function sysAddPathVar(path){ | 
		
	
		
			
			|  |  |  | function sysAddPathVar(addpath){ | 
		
	
		
			
			|  |  |  | // Object.assign({ | 
		
	
		
			
			|  |  |  | //   inherit: true, shell: true, env: ENV, title: `${command} ${args}` | 
		
	
		
			
			|  |  |  | // }, options) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // powershell $env:Path -split ';' | 
		
	
		
			
			|  |  |  | if (__isElevated) { | 
		
	
		
			
			|  |  |  | return nodeShellExec('Powershell.exe', [ | 
		
	
		
			
			|  |  |  | `$path = [Environment]::GetEnvironmentVariable('PATH', 'Machine') | 
		
	
		
			
			|  |  |  | $newpath = $path + ';${addpath}' | 
		
	
		
			
			|  |  |  | [Environment]::SetEnvironmentVariable("PATH", $newpath, 'Machine')` | 
		
	
		
			
			|  |  |  | ]).then(() => { | 
		
	
		
			
			|  |  |  | fs.writeFileSync('run.done', 'success') | 
		
	
		
			
			|  |  |  | }).catch(() => { | 
		
	
		
			
			|  |  |  | fs.writeFileSync('run.done', 'error') | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else return op['runas']() | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | var newpath = path.split(';'); | 
		
	
		
			
			|  |  |  | newpath = Array.from(new Set(newpath.push(path))).join(';') | 
		
	
		
			
			|  |  |  | // path.split(';').forEach(pel => { var kv = pel.split('='); kv[0] === key ? null : newpath.push(pel);  } ) | 
		
	
		
			
			|  |  |  | return nodeShellExec('setx', ['/m', 'PATH', newpath ]); | 
		
	
		
			
			|  |  |  | // var newpath = addpath.split(';'); | 
		
	
		
			
			|  |  |  | // newpath.push(addpath) | 
		
	
		
			
			|  |  |  | // newpath = Array.from(new Set(newpath)).join(';') | 
		
	
		
			
			|  |  |  | // // addpath.split(';').forEach(pel => { var kv = pel.split('='); kv[0] === key ? null : newpath.push(pel);  } ) | 
		
	
		
			
			|  |  |  | // // setx /M PATH "%PATH%;<path-to-executable-folder>" | 
		
	
		
			
			|  |  |  | // // %AppData%\npm | 
		
	
		
			
			|  |  |  | // return nodeShellExec('setx', ['/m', 'PATH', `%PATH%;${addpath}` ]); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // singleton one time lazy | 
		
	
	
		
			
			|  |  | @@ -127,6 +144,8 @@ if(!processedArgs.wd){ | 
		
	
		
			
			|  |  |  | process.env.wd = process.cwd(); | 
		
	
		
			
			|  |  |  | if(process.cwd() === __dirname) { | 
		
	
		
			
			|  |  |  | // This script was launched in the same dir. | 
		
	
		
			
			|  |  |  | // We do not know if it was copied to some random location. Check if we have elxr installed in current location. Or subidr. | 
		
	
		
			
			|  |  |  | process.env.wd = path.dirname( process.env.wd ); // Default to the parent. | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
			|  |  | @@ -256,10 +275,12 @@ var callshelltask = (args) => { | 
		
	
		
			
			|  |  |  | return  getshelltask(args)() | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var getCmdString = function(args){ return `"${args[0]} ${args[1].join(' ')}"` } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var getshelltask = (args) => { | 
		
	
		
			
			|  |  |  | return args[0] === 'rm' ? getgitbashtask(args) : () => { return nodeShellExec.apply(null, args) } } | 
		
	
		
			
			|  |  |  | var getgitbashtask = (args) => { return () => { | 
		
	
		
			
			|  |  |  | return nodeShellExec( `"${gitbash}"`, ['-c', `"${args[0]} ${args[1].join(' ')}"`], args[2]) } | 
		
	
		
			
			|  |  |  | var getgitbashtask = (args, onEachError) => { return () => { | 
		
	
		
			
			|  |  |  | return nodeShellExec( `"${gitbash}"`, ['-c', getCmdString(args)], args[2]).catch( onEachError || function(e){ console.error(e) }) } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var getTaskCheckExists = (command, options) => { | 
		
	
	
		
			
			|  |  | @@ -1520,32 +1541,44 @@ var op = { | 
		
	
		
			
			|  |  |  | }).finally(statuslog.finally) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , 'start': (label) => { | 
		
	
		
			
			|  |  |  | console.log('Starting Elixir Server.'); | 
		
	
		
			
			|  |  |  | var env = Object.assign({}, process.env); // Shallow clone it. | 
		
	
		
			
			|  |  |  | // console.dir(env) | 
		
	
		
			
			|  |  |  | env.NODE_ENV = process.env.NODE_ENV || 'development'; | 
		
	
		
			
			|  |  |  | env.DEBUG = 'loopback:connector:' + dbForLabel(label) | 
		
	
		
			
			|  |  |  | var cmd = env.NODE_ENV === 'development' ? 'nodemon' : 'node'; | 
		
	
		
			
			|  |  |  | // cmd = 'node' | 
		
	
		
			
			|  |  |  | cmd = [cmd, ['--inspect=9228', 'elixir/server.js']] | 
		
	
		
			
			|  |  |  | var childPromise = nodeShellExec(...cmd, { | 
		
	
		
			
			|  |  |  | // inherit : true, | 
		
	
		
			
			|  |  |  | shell: true, | 
		
	
		
			
			|  |  |  | detached: true, | 
		
	
		
			
			|  |  |  | stdio: 'ignore', | 
		
	
		
			
			|  |  |  | cwd: instanceroot + '/' + 'elixir-server' | 
		
	
		
			
			|  |  |  | , env: env | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | , 'start': (args) => { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var child = childPromise.process; | 
		
	
		
			
			|  |  |  | if (typeof child.pid !== 'undefined') { | 
		
	
		
			
			|  |  |  | console.log(`started Elixir Server PID(${child.pid}) : NODE_ENV=${process.NODE_ENV} ${cmd}`); | 
		
	
		
			
			|  |  |  | fs.writeFileSync('.elixir-server.elixir.server.pid', child.pid, { | 
		
	
		
			
			|  |  |  | encoding: 'utf8' | 
		
	
		
			
			|  |  |  | var label = clioverrides.cmd | 
		
	
		
			
			|  |  |  | var env = Object.assign({}, process.env); // Shallow clone it. | 
		
	
		
			
			|  |  |  | env.NODE_ENV = clioverrides.node_env || 'development'; | 
		
	
		
			
			|  |  |  | var nodecmd = clioverrides.node_env === 'development' ? 'nodemon' : 'node'; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | function startFn( o ){ | 
		
	
		
			
			|  |  |  | var cmd = [nodecmd, [`--inspect=${o.debugport}`, '--preserve-symlinks', o.script]] | 
		
	
		
			
			|  |  |  | console.log(`Starting ${o.name}.`); | 
		
	
		
			
			|  |  |  | var childPromise = nodeShellExec('cmd', ['/k', getCmdString(cmd) ], { | 
		
	
		
			
			|  |  |  | // inherit : true, | 
		
	
		
			
			|  |  |  | shell: true, | 
		
	
		
			
			|  |  |  | detached: true, | 
		
	
		
			
			|  |  |  | stdio: 'ignore', | 
		
	
		
			
			|  |  |  | cwd: instanceroot + o.path | 
		
	
		
			
			|  |  |  | , env: env | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | var child = childPromise.process; | 
		
	
		
			
			|  |  |  | var cpid = child.pid | 
		
	
		
			
			|  |  |  | if (typeof child.pid !== 'undefined') { | 
		
	
		
			
			|  |  |  | childPromise.then(()=>{ | 
		
	
		
			
			|  |  |  | console.log(`  *** started Elixir Loopback Server PID(${cpid}) : NODE_ENV=${clioverrides.node_env} ${cmd}`); | 
		
	
		
			
			|  |  |  | fs.writeFileSync('.elixir-server.elixir.server.pid', '' + cpid) | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | .catch(e => console.errror(e) ) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if(clioverrides.node_env === 'development') { | 
		
	
		
			
			|  |  |  | env.DEBUG = 'loopback:connector:' + dbForLabel(label) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | startFn( { debugport : 9228, script : 'elixir/server.js', name : 'Elixir Loopback Server', path : '/' + 'elixir-server' } ) | 
		
	
		
			
			|  |  |  | startFn( { debugport : 9227, script : 'bin/www', name : 'Express Server', path : '/' + 'chess-server-lib/server' } ) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // cmd = 'node'() | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // nodeShellExec('node', ['--inspect=9226', ' bin/www'], { | 
		
	
		
			
			|  |  |  | //   inherit : true, | 
		
	
		
			
			|  |  |  | //   shell: true, detached: true, | 
		
	
	
		
			
			|  |  | @@ -1560,28 +1593,28 @@ var op = { | 
		
	
		
			
			|  |  |  | //   cwd : 'client/', | 
		
	
		
			
			|  |  |  | //   env: env | 
		
	
		
			
			|  |  |  | // }) | 
		
	
		
			
			|  |  |  | console.log('Starting Elixir Client Host.'); | 
		
	
		
			
			|  |  |  | var cmd = ['ember', ['s']] | 
		
	
		
			
			|  |  |  | var childPromise = nodeShellExec(...cmd, { | 
		
	
		
			
			|  |  |  | // var childPromise = nodeShellExec('node', ['--inspect=9227', './node_modules/.bin/ember', 's'], { | 
		
	
		
			
			|  |  |  | // PB : TODO -- ember debugging. | 
		
	
		
			
			|  |  |  | // inherit : true, | 
		
	
		
			
			|  |  |  | shell: true, | 
		
	
		
			
			|  |  |  | detached: true, | 
		
	
		
			
			|  |  |  | stdio: 'ignore', | 
		
	
		
			
			|  |  |  | cwd: instanceroot + '/' + 'client' | 
		
	
		
			
			|  |  |  | , env: env | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | // .catch(e=>console.error(e)) | 
		
	
		
			
			|  |  |  | // console.log('Starting Elixir Client Host.'); | 
		
	
		
			
			|  |  |  | // var cmd = ['ember', ['s']] | 
		
	
		
			
			|  |  |  | // var childPromise = nodeShellExec(...cmd, { | 
		
	
		
			
			|  |  |  | //   // var childPromise = nodeShellExec('node', ['--inspect=9227', './node_modules/.bin/ember', 's'], { | 
		
	
		
			
			|  |  |  | //   // PB : TODO -- ember debugging. | 
		
	
		
			
			|  |  |  | //   // inherit : true, | 
		
	
		
			
			|  |  |  | //   shell: true, | 
		
	
		
			
			|  |  |  | //   detached: true, | 
		
	
		
			
			|  |  |  | //   stdio: 'ignore', | 
		
	
		
			
			|  |  |  | //   cwd: instanceroot + '/' + 'client' | 
		
	
		
			
			|  |  |  | //   , env: env | 
		
	
		
			
			|  |  |  | // }) | 
		
	
		
			
			|  |  |  | // // .catch(e=>console.error(e)) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | child = childPromise.process; | 
		
	
		
			
			|  |  |  | if (typeof child.pid !== 'undefined') { | 
		
	
		
			
			|  |  |  | console.log(`started Elixir Client Host PID(${child.pid}) : NODE_ENV=${process.NODE_ENV} ${cmd}`); | 
		
	
		
			
			|  |  |  | fs.writeFileSync('.client.server.pid', child.pid, { | 
		
	
		
			
			|  |  |  | encoding: 'utf8' | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | // child = childPromise.process; | 
		
	
		
			
			|  |  |  | // if (typeof child.pid !== 'undefined') { | 
		
	
		
			
			|  |  |  | //   console.log(`started Elixir Client Host PID(${child.pid}) : NODE_ENV=${process.NODE_ENV} ${cmd}`); | 
		
	
		
			
			|  |  |  | //   fs.writeFileSync('.client.server.pid', child.pid, { | 
		
	
		
			
			|  |  |  | //     encoding: 'utf8' | 
		
	
		
			
			|  |  |  | //   }) | 
		
	
		
			
			|  |  |  | // } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , 'stop': (label) => { | 
		
	
		
			
			|  |  |  | const kill = require('tree-kill'); | 
		
	
	
		
			
			|  |  | @@ -1593,10 +1626,10 @@ var op = { | 
		
	
		
			
			|  |  |  | console.log(serverPid) | 
		
	
		
			
			|  |  |  | kill(serverPid) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | serverPid = fs.readFileSync('.client.server.pid', { | 
		
	
		
			
			|  |  |  | serverPid = fs.readFileSync('.express.server.pid', { | 
		
	
		
			
			|  |  |  | encoding: 'utf8' | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | fs.unlinkSync('.client.server.pid') | 
		
	
		
			
			|  |  |  | fs.unlinkSync('.express.server.pid') | 
		
	
		
			
			|  |  |  | console.log(serverPid) | 
		
	
		
			
			|  |  |  | kill(serverPid) | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
			|  |  | @@ -2051,6 +2084,10 @@ var subcommandlabels = { | 
		
	
		
			
			|  |  |  | , switch : (`switch ${processedArgs._[1] || ''}`).trim() | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var independentcmd = function(){ | 
		
	
		
			
			|  |  |  | return false; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var cmds = { | 
		
	
		
			
			|  |  |  | remote : { | 
		
	
		
			
			|  |  |  | // return a interpreted set of arguments for this comd run context. | 
		
	
	
		
			
			|  |  | @@ -2058,6 +2095,24 @@ var cmds = { | 
		
	
		
			
			|  |  |  | return { cmd : subcommandlabels['remote'], runchoice : 'c' } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , resetgitconfig : { | 
		
	
		
			
			|  |  |  | // return a interpreted set of arguments for this comd run context. | 
		
	
		
			
			|  |  |  | cmdFn : resetgitconfig | 
		
	
		
			
			|  |  |  | , interpret() { return { cmd : 'resetgitconfig' } } | 
		
	
		
			
			|  |  |  | , getPossiblePrompts(){ return {} } | 
		
	
		
			
			|  |  |  | , noprerequisites : true | 
		
	
		
			
			|  |  |  | , independentcmd : true | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , reinit : { | 
		
	
		
			
			|  |  |  | // return a interpreted set of arguments for this comd run context. | 
		
	
		
			
			|  |  |  | cmdFn : reinit | 
		
	
		
			
			|  |  |  | , interpret() { return { cmd : 'reinit' } } | 
		
	
		
			
			|  |  |  | , getPossiblePrompts(){ return {} } | 
		
	
		
			
			|  |  |  | , noprerequisites : true | 
		
	
		
			
			|  |  |  | , independentcmd : true | 
		
	
		
			
			|  |  |  | , requiresElevation : true | 
		
	
		
			
			|  |  |  | , requires : [ generateDependencies ] | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , switch : { | 
		
	
		
			
			|  |  |  | interpret() { | 
		
	
		
			
			|  |  |  | return { cmd : subcommandlabels['switch'], runchoice : 'c', username : processedArgs._[2] | 
		
	
	
		
			
			|  |  | @@ -2590,7 +2645,6 @@ var instanceData = (function(){ | 
		
	
		
			
			|  |  |  | , commonInstance(selected) { return __acquireData(selected, defaultRepoOwner | 
		
	
		
			
			|  |  |  | // , function(e){ console.info('This is probably an error unless the user is asking to create a new instance with this name.') } | 
		
	
		
			
			|  |  |  | ) } | 
		
	
		
			
			|  |  |  | , genericChessInstance(selected) { return __acquireData(selected) } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | })() | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
			|  |  | @@ -2599,13 +2653,91 @@ var acquireData = function(slections){ | 
		
	
		
			
			|  |  |  | return any(configPriority.map(cfg => { return function() { return instanceData[cfg](slections) } } ), true, true) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // Git Credential storage... | 
		
	
		
			
			|  |  |  | // notepad C:/Program Files/Git/etc/gitconfig | 
		
	
		
			
			|  |  |  | // git config --global --unset credential | 
		
	
		
			
			|  |  |  | // git config --edit --system | 
		
	
		
			
			|  |  |  | // git config --global credential.helper "store --file ~/gitcredentials" | 
		
	
		
			
			|  |  |  | // git credential fill | 
		
	
		
			
			|  |  |  | // git credential-store --file ~/git.store store | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function reinit(){ | 
		
	
		
			
			|  |  |  | sysAddPathVar('%AppData%\\npm') | 
		
	
		
			
			|  |  |  | resetgitconfig() | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | function resetgitconfig(){ | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage | 
		
	
		
			
			|  |  |  | // Git Credential storage... | 
		
	
		
			
			|  |  |  | // git config --global credential.helper 'store --file ~/.gitcredentials' | 
		
	
		
			
			|  |  |  | // git credential-store --file ~/.gitcredentials store | 
		
	
		
			
			|  |  |  | // // notepad C:/Program Files/Git/etc/gitconfig | 
		
	
		
			
			|  |  |  | // git config --global --unset credential | 
		
	
		
			
			|  |  |  | // git config --edit --system | 
		
	
		
			
			|  |  |  | // git config --global credential.helper "store --file ~/gitcredentials" | 
		
	
		
			
			|  |  |  | // git credential fill | 
		
	
		
			
			|  |  |  | // git credential-store --file ~/git.store store | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Find system git config | 
		
	
		
			
			|  |  |  | // git config --global --edit | 
		
	
		
			
			|  |  |  | // git config --list --show-origin | 
		
	
		
			
			|  |  |  | // git config --list --show-origin --show-scope | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // https://stackoverflow.com/questions/35942754/how-can-i-save-username-and-password-in-git | 
		
	
		
			
			|  |  |  | // Recipie | 
		
	
		
			
			|  |  |  | // git config --global --unset credentials.helper | 
		
	
		
			
			|  |  |  | // cd /path/to/my/repo | 
		
	
		
			
			|  |  |  | // git config --unset credential.helper | 
		
	
		
			
			|  |  |  | // git config credential.helper 'store --file ~/.git_repo_credentials' | 
		
	
		
			
			|  |  |  | // git config credential.*.username my_user_name | 
		
	
		
			
			|  |  |  | // git config credential.https://gitlab.com.username my_user_name | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // git credential fill | 
		
	
		
			
			|  |  |  | // git config --global credential.modalprompt false // doesnst work. | 
		
	
		
			
			|  |  |  | // core askpass = ;;; https://stackoverflow.com/questions/37182847/how-do-i-disable-git-credential-manager-for-windows | 
		
	
		
			
			|  |  |  | var options = { | 
		
	
		
			
			|  |  |  | inherit: true, shell: true //, env: process.env | 
		
	
		
			
			|  |  |  | , cwd: instanceroot | 
		
	
		
			
			|  |  |  | , runas: processedArgs.runas | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | var task = ['git', ['config'], options] | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var tasklist = [ | 
		
	
		
			
			|  |  |  | // ['--global', '--unset credentials.helper'] | 
		
	
		
			
			|  |  |  | // ['--unset', 'credentials.helper'] | 
		
	
		
			
			|  |  |  | // , | 
		
	
		
			
			|  |  |  | // ['credential.helper', `'store --file git_repo_credentials'`] | 
		
	
		
			
			|  |  |  | ['--global', 'credential.helper', "'store --file ~/.git_repo_credentials'"] | 
		
	
		
			
			|  |  |  | , ['--global', '--replace-all', 'user.name', 'pb'] | 
		
	
		
			
			|  |  |  | , ['--global', '--replace-all', 'user.email', 'pradeep@bbh.org.in'] | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // , ['--list'] | 
		
	
		
			
			|  |  |  | // , ['credential', 'fill'] | 
		
	
		
			
			|  |  |  | ] | 
		
	
		
			
			|  |  |  | var onEachError = e => console.error( e.messages.join('\n') + e.result + '\n' + util.inspect(e)  + '\n') | 
		
	
		
			
			|  |  |  | var shellT = (args) => { return getgitbashtask(args, onEachError) | 
		
	
		
			
			|  |  |  | // .catch(e => console.error( e.messages.join('\n') + e.result + '\n' + util.inspect(e)  + '\n' + tasq.toString()) ) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | execserial(tasklist, task, shellT, onEachError ) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var createTasq = (args, shellT, onEachError) => { | 
		
	
		
			
			|  |  |  | var tasq = shellT ? shellT(args) : (() => { return nodeShellExec.apply(null, args).catch( onEachError || function(e){ console.error(e) } ) }) | 
		
	
		
			
			|  |  |  | tasq.toString = function(){ return JSON.stringify(args)} | 
		
	
		
			
			|  |  |  | return tasq; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var execserial = function(tasklist, task, shellT){ | 
		
	
		
			
			|  |  |  | var exec = (taskArgs)=>{ | 
		
	
		
			
			|  |  |  | var thistask = task.concat(); | 
		
	
		
			
			|  |  |  | thistask[1] = thistask[1].concat() | 
		
	
		
			
			|  |  |  | thistask[1].push.apply(thistask[1], taskArgs) | 
		
	
		
			
			|  |  |  | return createTasq(thistask, shellT) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return any(tasklist.map(exec)) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var execone = function(taskArgs, task){ return any([task[1].push.apply(task[1], taskArgs)].map(createTasq)) } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var __acquireConfig = function (selected, owner, clusternodename, configrepo, errHandler) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | configrepo = configrepo || selected.instanceName + '-config-' + selected.node_env; | 
		
	
	
		
			
			|  |  | @@ -2779,6 +2911,7 @@ while(parent !== pp){ | 
		
	
		
			
			|  |  |  | return function(){ | 
		
	
		
			
			|  |  |  | return hasElxr(p).then((value)=>{ | 
		
	
		
			
			|  |  |  | if(value) return p | 
		
	
		
			
			|  |  |  | // PB : TODO -- Using throw like this is not friendly with any... | 
		
	
		
			
			|  |  |  | throw { value : false }; | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
			|  |  | @@ -2916,8 +3049,8 @@ var hasElxr = function(path, options, cb) { | 
		
	
		
			
			|  |  |  | var tasks = [ | 
		
	
		
			
			|  |  |  | '/elxr' // Is there a subfolder named elxr | 
		
	
		
			
			|  |  |  | , '/elxr/.git' // which is self git repository | 
		
	
		
			
			|  |  |  | , '/elxr/.elxr' // and has .elxr subfolder | 
		
	
		
			
			|  |  |  | , '/elxr/.elxr/' + __ALIAS__STAMP__  // Which has our stamp. | 
		
	
		
			
			|  |  |  | // , '/elxr/.elxr' // and has .elxr subfolder we now store this in the instanceroot. | 
		
	
		
			
			|  |  |  | , '/elxr/' + __ALIAS__STAMP__  // Which has our stamp. | 
		
	
		
			
			|  |  |  | ] | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if(options.sync) { return tasks.earlyreduce((acc, tpath)=>{ | 
		
	
	
		
			
			|  |  | @@ -3424,7 +3557,7 @@ function findlocalinstances(chessinstances, instanceoptions){ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // function updateselection(selected) { selectedinstance = utils.assign(selectedinstance, selected) } | 
		
	
		
			
			|  |  |  | var selectedinstance = null; | 
		
	
		
			
			|  |  |  | var selectedinstance = { root : process.env.wd }; | 
		
	
		
			
			|  |  |  | var chessinstances = { current_run : {} }; | 
		
	
		
			
			|  |  |  | var promptkeys = { | 
		
	
		
			
			|  |  |  | cmd : processedArgs._[0] || 'pull' | 
		
	
	
		
			
			|  |  | @@ -3914,7 +4047,7 @@ var maintask = () => { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var generateDependencies = function(){ | 
		
	
		
			
			|  |  |  | function generateDependencies(){ | 
		
	
		
			
			|  |  |  | // PB : TODO -- Keep only the last n runs... | 
		
	
		
			
			|  |  |  | // Currently it retains 2*n when proc needs to be relaunched in elevated mode !!! | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
			|  |  | @@ -4138,8 +4271,21 @@ var startElxr = function() { | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | detectInstanceRoot.then(()=>{ | 
		
	
		
			
			|  |  |  | return acquireElevationState().then(() => { | 
		
	
		
			
			|  |  |  | return startElxr() | 
		
	
		
			
			|  |  |  | var cmdobj = cmds[clioverrides.cmd] | 
		
	
		
			
			|  |  |  | return Promise.all((cmdobj.requires || []).map( (r) => utils.promisify(null, r) )  ).then(()=>{ | 
		
	
		
			
			|  |  |  | if(cmdobj.independentcmd) { | 
		
	
		
			
			|  |  |  | if(cmdobj.requiresElevation) { | 
		
	
		
			
			|  |  |  | return acquireElevationState().then(() => { | 
		
	
		
			
			|  |  |  | cmdobj.cmdFn() }) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else return cmdobj.cmdFn() | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else return acquireElevationState().then(() => { | 
		
	
		
			
			|  |  |  | return startElxr() | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | .catch(e => { | 
		
	
		
			
			|  |  |  | console.log('error ') | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | 
 |