|  |  | @@ -65,13 +65,36 @@ console.dir(processedArgs) | 
		
	
		
			
			|  |  |  | //   } | 
		
	
		
			
			|  |  |  | // }) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var clioverrides = { } | 
		
	
		
			
			|  |  |  | processedArgs._[1] ? clioverrides.instanceName = processedArgs._[1]: null; | 
		
	
		
			
			|  |  |  | processedArgs.node_env ? clioverrides.node_env = processedArgs.node_env | 
		
	
		
			
			|  |  |  | : (process.env.NODE_ENV && process.env.NODE_ENV.trim()) | 
		
	
		
			
			|  |  |  | ? clioverrides.node_env = (process.env.NODE_ENV && process.env.NODE_ENV.trim()) : null; | 
		
	
		
			
			|  |  |  | var subcommandlabels = { | 
		
	
		
			
			|  |  |  | remote : (`remote ${processedArgs._[1] || ''}`).trim() | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var interpretrun = function(){ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var cmds = { | 
		
	
		
			
			|  |  |  | 'remote' : function() { | 
		
	
		
			
			|  |  |  | return { cmd : subcommandlabels['remote'], runchoice : 'c' } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var cmd = processedArgs._[0]; | 
		
	
		
			
			|  |  |  | var clioverrides = { cmd } | 
		
	
		
			
			|  |  |  | processedArgs.node_env ? clioverrides.node_env = processedArgs.node_env | 
		
	
		
			
			|  |  |  | : (process.env.NODE_ENV && process.env.NODE_ENV.trim()) | 
		
	
		
			
			|  |  |  | ? clioverrides.node_env = (process.env.NODE_ENV && process.env.NODE_ENV.trim()) : null; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | return cmds[cmd] ? cmds[cmd]() : (function(){ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | processedArgs._[1] ? clioverrides.instanceName = processedArgs._[1]: null; | 
		
	
		
			
			|  |  |  | return clioverrides | 
		
	
		
			
			|  |  |  | })() | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | Object.keys(clioverrides).forEach( prop => { }) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var clioverrides = interpretrun() | 
		
	
		
			
			|  |  |  | console.dir(clioverrides) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // Object.keys(clioverrides).forEach( prop => { }) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var globSync = require('glob').sync; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
			|  |  | @@ -81,14 +104,14 @@ const { readdir } = require("fs").promises | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // Directory shallow walk and do perform on each dir. | 
		
	
		
			
			|  |  |  | const dirs = async (perform, path) => { | 
		
	
		
			
			|  |  |  | for (const dir of await readdir(path || process.cwd(), { withFileTypes: true })) { | 
		
	
		
			
			|  |  |  | for (const dir of await readdir(path || selectedinstance.root, { withFileTypes: true })) { | 
		
	
		
			
			|  |  |  | if (dir.isDirectory()) perform(dir) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var getShellTask = (command, args, options) => { | 
		
	
		
			
			|  |  |  | options = options || {} | 
		
	
		
			
			|  |  |  | var callshell = command === 'rm' ? callgitbashtask : callsheltask; | 
		
	
		
			
			|  |  |  | var callshell = command === 'rm' ? getgitbashtask : getshelltask; | 
		
	
		
			
			|  |  |  | return () => { | 
		
	
		
			
			|  |  |  | var p = callshell( [command, args, Object.assign({ | 
		
	
		
			
			|  |  |  | inherit: true, shell: true, env: ENV, title: `${command} ${args}` | 
		
	
	
		
			
			|  |  | @@ -103,9 +126,13 @@ var getShellTask = (command, args, options) => { | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var callsheltask = (args) => { | 
		
	
		
			
			|  |  |  | return args[0] === 'rm' ? callgitbashtask(args) : () => { return nodeShellExec.apply(null, args) } } | 
		
	
		
			
			|  |  |  | var callgitbashtask = (args) => { return () => { | 
		
	
		
			
			|  |  |  | var callshelltask = (args) => { | 
		
	
		
			
			|  |  |  | console.dir(args) | 
		
	
		
			
			|  |  |  | return  getshelltask(args)() } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 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]) } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
			|  |  | @@ -163,7 +190,7 @@ var gitops = { | 
		
	
		
			
			|  |  |  | var parameters = ['-c', 'branch=`git rev-parse --abbrev-ref HEAD`;for i in `git remote`; do git pull $i $branch; done;'] | 
		
	
		
			
			|  |  |  | var cmd = [gitbash | 
		
	
		
			
			|  |  |  | , ['-c', 'branch=`git rev-parse --abbrev-ref HEAD`;for i in `git remote`; do git pull $i $branch; done;'] | 
		
	
		
			
			|  |  |  | , { cwd: instanceroot + '/' + repo, title: 'pull all origins for ' + repo + ' ' + parameters.join(' ') }] | 
		
	
		
			
			|  |  |  | , { cwd: instanceroot + '/' + repo, title: 'discoverbranch for ' + repo + ' ' + parameters.join(' ') }] | 
		
	
		
			
			|  |  |  | return cmd | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
			|  |  | @@ -175,7 +202,7 @@ var getPullCmd = (repo, branch) => { | 
		
	
		
			
			|  |  |  | var pullCmd = [] | 
		
	
		
			
			|  |  |  | if(!branch) { | 
		
	
		
			
			|  |  |  | // console.warn('No branch was specified detecting from working client.') | 
		
	
		
			
			|  |  |  | // First check if working client exits. | 
		
	
		
			
			|  |  |  | // First check if working client exists. | 
		
	
		
			
			|  |  |  | // if (existsSync(instanceroot + '/' + repo)) { | 
		
	
		
			
			|  |  |  | pullCmd= gitops.getdiscoverbranchcmd(repo) | 
		
	
		
			
			|  |  |  | // } | 
		
	
	
		
			
			|  |  | @@ -183,12 +210,12 @@ var getPullCmd = (repo, branch) => { | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | // var pullCmd = [gitInstallDir | 
		
	
		
			
			|  |  |  | //   , ['-c', 'branch=`git rev-parse --abbrev-ref HEAD`;for i in `git remote`; do git pull $i $branch; done;'] | 
		
	
		
			
			|  |  |  | //   , { cwd: instanceroot + '/' + repo, title: 'pull all origins for ' + repo }] | 
		
	
		
			
			|  |  |  | //   , { cwd: instanceroot + '/' + repo, title: 'pull all remotes for ' + repo }] | 
		
	
		
			
			|  |  |  | if(branch) { | 
		
	
		
			
			|  |  |  | var parameters = ['-c', 'for i in `git remote`; do git pull $i ' + branch + '; done;'] | 
		
	
		
			
			|  |  |  | var pullCmd = [ gitbash | 
		
	
		
			
			|  |  |  | , ['-c', 'for i in `git remote`; do git pull $i ' + branch + '; done;'] | 
		
	
		
			
			|  |  |  | , { cwd: instanceroot + '/' + repo, title : 'pull all origins for ' + branch + '  ' + repo + ' ' + parameters.join(' ') }] | 
		
	
		
			
			|  |  |  | , { cwd: instanceroot + '/' + repo, title : 'pull all remotes for ' + branch + '  ' + repo + ' ' + parameters.join(' ') }] | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | // var pullCmd = ['pullall', [], { cwd : repo }] | 
		
	
		
			
			|  |  |  | if (useGitPull) pullCmd = ['git', ['pull'], { | 
		
	
	
		
			
			|  |  | @@ -579,6 +606,7 @@ var op = { | 
		
	
		
			
			|  |  |  | , 'remote': (args) => { | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Subcommands! | 
		
	
		
			
			|  |  |  | // PB : TODO -- we can now pass in hypehnated args... | 
		
	
		
			
			|  |  |  | if(!processedArgs.v) return false; // Only -v is supported presently.. | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var serial_perform = (repo) => { | 
		
	
	
		
			
			|  |  | @@ -665,10 +693,11 @@ var op = { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | dirs(perform_git_seturl) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , 'reset' : ()=>{ | 
		
	
		
			
			|  |  |  | // Reset the whole installation pertaining to this elxr folder. | 
		
	
		
			
			|  |  |  | // , 'reset' : ()=>{ | 
		
	
		
			
			|  |  |  | // PB : TODO -- Cant have 2 resets !! | 
		
	
		
			
			|  |  |  | //   // Reset the whole installation pertaining to this elxr folder. | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | // } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | , 'remote exists': (args) => { | 
		
	
		
			
			|  |  |  | var __args = { | 
		
	
	
		
			
			|  |  | @@ -677,9 +706,41 @@ var op = { | 
		
	
		
			
			|  |  |  | , branch : args.branch || processedArgs._[4] | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var command = ['git', ['remote', '-v']] | 
		
	
		
			
			|  |  |  | return nodeShellExec.apply(null, command).then(result=>{ | 
		
	
		
			
			|  |  |  | return result.messages.find( (r)=> { return r.includes( __args.remotename )  }) | 
		
	
		
			
			|  |  |  | var options = args.repo ? { cwd: instanceroot + '/' + args.repo } : {} | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // PB : TODO -- We should evaluate a whole list of remotes passed in from args instead of just one. | 
		
	
		
			
			|  |  |  | var commands = [ | 
		
	
		
			
			|  |  |  | ['git', ['remote', '-v'], utils.assign( { | 
		
	
		
			
			|  |  |  | evaluateResult : function(err, result){ | 
		
	
		
			
			|  |  |  | return [ | 
		
	
		
			
			|  |  |  | result.messages.find( (r)=> { return r.includes( __args.remotename )  }) | 
		
	
		
			
			|  |  |  | , result | 
		
	
		
			
			|  |  |  | ] | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } , options) ] | 
		
	
		
			
			|  |  |  | , ['git', ['ls-remote', __args.url], utils.assign( { | 
		
	
		
			
			|  |  |  | evaluateResult : function(err, result){ | 
		
	
		
			
			|  |  |  | // fatal: unable to access '${__args.url}/': Failed to connect to git.bbh port 80 after 21025 ms: Timed out | 
		
	
		
			
			|  |  |  | // `fatal: repository '${__args.url}/' not found` | 
		
	
		
			
			|  |  |  | var hasfailed = /^fatal: .*/.test(result.messages.join(' ')) | 
		
	
		
			
			|  |  |  | return [ | 
		
	
		
			
			|  |  |  | !hasfailed, result | 
		
	
		
			
			|  |  |  | ] | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } , options) ] | 
		
	
		
			
			|  |  |  | ] | 
		
	
		
			
			|  |  |  | var mapped = commands.map(callshelltask).map( p => p.catch(e => e)) // Handle errors later. | 
		
	
		
			
			|  |  |  | return Promise.all(mapped).then( allresolved =>{ | 
		
	
		
			
			|  |  |  | console.dir(allresolved) | 
		
	
		
			
			|  |  |  | !allresolved[0][0] && !allresolved[1][0] ? console.log('was not added as a remote and url is currently inaccessible.') | 
		
	
		
			
			|  |  |  | : allresolved[0][0] && allresolved[1][0] ? console.log('was added as a remote and url is accessible.') | 
		
	
		
			
			|  |  |  | : allresolved[0][0] && !allresolved[1][0] ? console.log('was added as a remote but url is currently inaccessible.') | 
		
	
		
			
			|  |  |  | : console.log('was not added as a remote but url is currently accessible.') | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | return !allresolved[0][0] && !allresolved[1][0] ? [0, 0] | 
		
	
		
			
			|  |  |  | : allresolved[0][0] && allresolved[1][0] ? [1, 1]   // => was added as a remote and url is accessible. | 
		
	
		
			
			|  |  |  | : allresolved[0][0] && !allresolved[1][0] ? [1, 0]  // => was added as a remote but url is currently inaccessible. | 
		
	
		
			
			|  |  |  | : [0, 1]  // => was not added and remote and url is accessible. | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
			|  |  | @@ -692,21 +753,32 @@ var op = { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // use the repo manifest to create missing remotes. | 
		
	
		
			
			|  |  |  | function perform_remote_refresh(dir){ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var repo = dir.name | 
		
	
		
			
			|  |  |  | var dscoverbranchcmd = gitops.getdiscoverbranchcmd(repo) | 
		
	
		
			
			|  |  |  | var remotes = require(`${dir.name}/repo-manifest.js`)( null, { repouser : selectedinstance.repouser }).remotes; | 
		
	
		
			
			|  |  |  | try { | 
		
	
		
			
			|  |  |  | var remotes = require(`${selectedinstance.root}/${dir.name}/repo-manifest.js`)( null, selectedinstance).remotes || []; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | catch(e){ | 
		
	
		
			
			|  |  |  | var remotes = [] | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | // console.log(`${dir.name}/repo-manifest.js` + '---------------------------') | 
		
	
		
			
			|  |  |  | // console.dir(remotes) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return nodeShellExec.apply(null, dscoverbranchcmd(repo)).then(__branch=>{ | 
		
	
		
			
			|  |  |  | return nodeShellExec.apply(null, dscoverbranchcmd).then(__branch=>{ | 
		
	
		
			
			|  |  |  | console.log('Processing : ' + dir.name) | 
		
	
		
			
			|  |  |  | var branch = __branch | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | __args.repo = repo | 
		
	
		
			
			|  |  |  | __args.branch = __branch | 
		
	
		
			
			|  |  |  | var promises = [] | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | remotes.foreach(remote =>{ | 
		
	
		
			
			|  |  |  | remotes.forEach(remote =>{ | 
		
	
		
			
			|  |  |  | Object.keys(remote).forEach(remotename => { | 
		
	
		
			
			|  |  |  | promises.push( op['remote exists'].then( exists => { | 
		
	
		
			
			|  |  |  | if(!exits) { | 
		
	
		
			
			|  |  |  | return op['remote add']( { remotename, | 
		
	
		
			
			|  |  |  | __args.remotename = remotename | 
		
	
		
			
			|  |  |  | __args.url = remote[remotename] | 
		
	
		
			
			|  |  |  | promises.push( op['remote exists']( __args ).then( exists => { | 
		
	
		
			
			|  |  |  | if(!exists[0]) { | 
		
	
		
			
			|  |  |  | if(!exists[1]) { console.error( `Skipping inaccessible remote url ${__args.url}` ) } | 
		
	
		
			
			|  |  |  | else return op['remote add']( { remotename, | 
		
	
		
			
			|  |  |  | // PB : TODO -- use the most accessible remote instead of the first available. | 
		
	
		
			
			|  |  |  | url : (utils.js.isArray(remote[remotename]) ? remote[remotename][0] : remote[remotename]), branch | 
		
	
		
			
			|  |  |  | } ) | 
		
	
	
		
			
			|  |  | @@ -718,11 +790,10 @@ var op = { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return Promise.all(promises) | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | .catch((e) => { console.error(e); return { error: true, message: repo } }) | 
		
	
		
			
			|  |  |  | .catch((e) => { console.log('Processing Error : ' + dir.name); console.error(e); return { error: true, message: repo } }) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | dirs(perform_remote_refresh) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return dirs(perform_remote_refresh) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , 'remote add': (args) => { | 
		
	
		
			
			|  |  |  | // PB : TODO -- set-upstream-to should be chosen and intentionally switched. Coz we can have multiple upstream remotes. | 
		
	
	
		
			
			|  |  | @@ -927,7 +998,7 @@ var op = { | 
		
	
		
			
			|  |  |  | // , ['git', ['commit', '-a', '-m', `relocate folder ${args.folder} to ${targetrepo}`], sourcerepooptions ] | 
		
	
		
			
			|  |  |  | ] | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return any(cmdseq.map(callsheltask)) | 
		
	
		
			
			|  |  |  | return any(cmdseq.map(getshelltask)) | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | }).catch(e=>{console.error(e)}) | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
			|  |  | @@ -967,7 +1038,7 @@ var op = { | 
		
	
		
			
			|  |  |  | , ['git', ['clone', `${args.remotebase}${args.targetrepo}`, `relocate-${args.targetrepo}-${args.folder}`], options] | 
		
	
		
			
			|  |  |  | ] | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | return any(cmdseq.map(callsheltask)).then(() => { | 
		
	
		
			
			|  |  |  | return any(cmdseq.map(getshelltask)).then(() => { | 
		
	
		
			
			|  |  |  | // , ['git', ['subtree', 'split', '-P', `${args.folder}`, '-b', `relocate-${args.sourcerepo}-${args.folder}`], sourcerepooptions] | 
		
	
		
			
			|  |  |  | // split doesnt retain folder structure we need to move and commit ourselves through a branch to retain history... | 
		
	
		
			
			|  |  |  | // , ['git', [`checkout relocate-${args.sourcerepo}-${args.folder}`], sourcerepooptions] | 
		
	
	
		
			
			|  |  | @@ -1010,7 +1081,7 @@ var op = { | 
		
	
		
			
			|  |  |  | , targetrepooptions ] | 
		
	
		
			
			|  |  |  | // , ['git', ['push', targetrepooptions ] // manual push for now.. | 
		
	
		
			
			|  |  |  | ] | 
		
	
		
			
			|  |  |  | return any(cmdseq.map(callsheltask)).catch(e=>{console.error(e)}) | 
		
	
		
			
			|  |  |  | return any(cmdseq.map(getshelltask)).catch(e=>{console.error(e)}) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | , 'filter-repo' : function(args){ | 
		
	
	
		
			
			|  |  | @@ -1032,7 +1103,7 @@ var op = { | 
		
	
		
			
			|  |  |  | // git remote add src-project ../src-project | 
		
	
		
			
			|  |  |  | ['git', ['filter-repo', '--path', `${args.folder}`], targetrepooptions ] | 
		
	
		
			
			|  |  |  | ] | 
		
	
		
			
			|  |  |  | return any(cmdseq.map(callsheltask)).catch(e=>{console.error(e); throw 'failed' }) | 
		
	
		
			
			|  |  |  | return any(cmdseq.map(getshelltask)).catch(e=>{console.error(e); throw 'failed' }) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | , 'filter-branch' : function(preservefolder, repo){ | 
		
	
	
		
			
			|  |  | @@ -1440,7 +1511,7 @@ var op = { | 
		
	
		
			
			|  |  |  | if (!branch) { | 
		
	
		
			
			|  |  |  | var dscoverbranchcmd = gitops.getdiscoverbranchcmd(repo) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | promise = nodeShellExec.apply(null, dscoverbranchcmd(repo)).then(__branch=>{ branch = __branch}) | 
		
	
		
			
			|  |  |  | promise = nodeShellExec.apply(null, dscoverbranchcmd).then(__branch=>{ branch = __branch}) | 
		
	
		
			
			|  |  |  | .catch((e) => { console.error(e); return { error: true, message: repo } }) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
			|  |  | @@ -1491,7 +1562,7 @@ var op = { | 
		
	
		
			
			|  |  |  | // Checkout is reduced to pull provided the current branch is the targetbranch | 
		
	
		
			
			|  |  |  | if(branch === mergesource) performCheckout = (def) => { | 
		
	
		
			
			|  |  |  | var dscoverbranchcmd = gitops.getdiscoverbranchcmd(repo) | 
		
	
		
			
			|  |  |  | return nodeShellExec.apply(null, dscoverbranchcmd(repo)).then(__branch=>{ | 
		
	
		
			
			|  |  |  | return nodeShellExec.apply(null, dscoverbranchcmd).then(__branch=>{ | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | if(branch === __branch) return performCloneAndCheckout(def) | 
		
	
		
			
			|  |  |  | return performPullOrCloneForBranch(def) | 
		
	
	
		
			
			|  |  | @@ -1806,7 +1877,7 @@ var elxr = { | 
		
	
		
			
			|  |  |  | ------------------------------------------------------------------------------- | 
		
	
		
			
			|  |  |  | `) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , getpulltask(def){ | 
		
	
		
			
			|  |  |  | , getpulltask(args){ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // def can be an instance config | 
		
	
		
			
			|  |  |  | // Or an object with many repos and elevated repos | 
		
	
	
		
			
			|  |  | @@ -1839,11 +1910,11 @@ var elxr = { | 
		
	
		
			
			|  |  |  | // var parameters = ['-c', 'for i in `git remote`; do git pull $i ' + branch + '; done;'] | 
		
	
		
			
			|  |  |  | // var pullCmd = [ gitbash | 
		
	
		
			
			|  |  |  | //   , ['-c', 'for i in `git remote`; do git pull $i ' + branch + '; done;'] | 
		
	
		
			
			|  |  |  | //   , { cwd: instanceroot + '/' + repo, title : 'pull all origins for ' + branch + '  ' + repo + ' ' + parameters.join(' ') }] | 
		
	
		
			
			|  |  |  | //   , { cwd: instanceroot + '/' + repo, title : 'pull all remotes for ' + branch + '  ' + repo + ' ' + parameters.join(' ') }] | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | def = def || { | 
		
	
		
			
			|  |  |  | var def = args || { | 
		
	
		
			
			|  |  |  | repos : selectedinstance.repos, | 
		
	
		
			
			|  |  |  | elevated : selectedinstance.elevated | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
			|  |  | @@ -1932,9 +2003,6 @@ function preworkerconfig(){ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // The main elxr cli process | 
		
	
		
			
			|  |  |  | function elxrworker() { | 
		
	
		
			
			|  |  |  | var subcommandlabels = { | 
		
	
		
			
			|  |  |  | remote : (`remote ${processedArgs._[1] || ''}`).trim() | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var __runcmd = function (label) { | 
		
	
		
			
			|  |  |  | var distinquishedlabel = subcommandlabels[label] || label | 
		
	
	
		
			
			|  |  | @@ -2265,7 +2333,7 @@ var detectinstances = function () { | 
		
	
		
			
			|  |  |  | instanceroot = detected.root | 
		
	
		
			
			|  |  |  | __default.root = root; | 
		
	
		
			
			|  |  |  | clioverrides.root = clioverrides.root || root; | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // Resolves empty array when No known instances detected. | 
		
	
		
			
			|  |  |  | return Promise.resolve(instanceoptions) | 
		
	
		
			
			|  |  |  | }) | 
		
	
	
		
			
			|  |  | @@ -2396,7 +2464,7 @@ var prerequisites = [ | 
		
	
		
			
			|  |  |  | return any([any(steps), any(prompts)]) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , installsteps: function () { | 
		
	
		
			
			|  |  |  | return any([this.installcmd].map(callsheltask)) | 
		
	
		
			
			|  |  |  | return any([this.installcmd].map(getshelltask)) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , postinstallsteps: function(){ | 
		
	
		
			
			|  |  |  |  | 
		
	
	
		
			
			|  |  | @@ -2424,7 +2492,7 @@ var prerequisites = [ | 
		
	
		
			
			|  |  |  | ['git', ['config', '--global', '--add', 'user.name', `${gitUser}`]] | 
		
	
		
			
			|  |  |  | , ['git', ['config', '--global', '--add', 'user.email', `${gitEmail}`]] | 
		
	
		
			
			|  |  |  | ] | 
		
	
		
			
			|  |  |  | return any(steps.map(callsheltask)).then(() => { | 
		
	
		
			
			|  |  |  | return any(steps.map(getshelltask)).then(() => { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | }); | 
		
	
	
		
			
			|  |  | @@ -2435,7 +2503,7 @@ var prerequisites = [ | 
		
	
		
			
			|  |  |  | , verifyAndInstall : function(){ | 
		
	
		
			
			|  |  |  | return getTaskCheckExists(this.shellcmd, { ignorefailures: true })().then((exists) => { | 
		
	
		
			
			|  |  |  | if(exists) { | 
		
	
		
			
			|  |  |  | // return any(['git', ['config', '--global', '-l']].map(callsheltask)) | 
		
	
		
			
			|  |  |  | // return any(['git', ['config', '--global', '-l']].map(getshelltask)) | 
		
	
		
			
			|  |  |  | return this.getUser(null, this.postinstallsteps.bind(this)) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | return this.install(); | 
		
	
	
		
			
			|  |  | @@ -2449,7 +2517,7 @@ var prerequisites = [ | 
		
	
		
			
			|  |  |  | if(!repo) globalOrLocal = '--global'; | 
		
	
		
			
			|  |  |  | else globalOrLocal = '--local' | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return any([['git', ['config', globalOrLocal, '--get-all', 'user.name']]].map(callsheltask)).then((result)=>{ | 
		
	
		
			
			|  |  |  | return any([['git', ['config', globalOrLocal, '--get-all', 'user.name']]].map(getshelltask)).then((result)=>{ | 
		
	
		
			
			|  |  |  | // not yet configured. | 
		
	
		
			
			|  |  |  | if(!result.success) return onNoResult() | 
		
	
		
			
			|  |  |  | else { | 
		
	
	
		
			
			|  |  | @@ -2476,7 +2544,7 @@ var prerequisites = [ | 
		
	
		
			
			|  |  |  | , installcmd: ['MSIEXEC.exe', ['/i' | 
		
	
		
			
			|  |  |  | , path.resolve(downloadsdir + '/' + 'node-v14.16.0-x64.msi') | 
		
	
		
			
			|  |  |  | , 'ACCEPT=YES', '/passive']] | 
		
	
		
			
			|  |  |  | , install : function() { return any([this.installcmd].map(callsheltask)).then(() => { }) } | 
		
	
		
			
			|  |  |  | , install : function() { return any([this.installcmd].map(getshelltask)).then(() => { }) } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | ] | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
			|  |  | @@ -2812,12 +2880,12 @@ acquireElevationState().then(() => { | 
		
	
		
			
			|  |  |  | const retaincount = 2 | 
		
	
		
			
			|  |  |  | var min = runtimestamp; | 
		
	
		
			
			|  |  |  | var collect = [] | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | if(noprerequisites[processedArgs._[0]] | 
		
	
		
			
			|  |  |  | || skipprereqs[processedArgs._[0]] | 
		
	
		
			
			|  |  |  | ) { | 
		
	
		
			
			|  |  |  | return elxrworker() | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // if(noprerequisites[processedArgs._[0]] | 
		
	
		
			
			|  |  |  | //   || skipprereqs[processedArgs._[0]] | 
		
	
		
			
			|  |  |  | // ) { | 
		
	
		
			
			|  |  |  | //   return elxrworker() | 
		
	
		
			
			|  |  |  | // } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var getchoices = function(detectedinstanceoptions, promptkeys){ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
			|  |  | @@ -2852,12 +2920,14 @@ acquireElevationState().then(() => { | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return detectinstances().then((detectedinstanceoptions)=>{ | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | detectedinstanceoptions.splice(0,0, __default) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // PB : TODO -- Most recent should be at the tip ! at index 0 so utils.reverseassign is required !!! | 
		
	
		
			
			|  |  |  | selectedinstance = utils.assign( ...detectedinstanceoptions.slice(-2) ) | 
		
	
		
			
			|  |  |  | // promptkeys = utils.assign(promptkeys, clioverrides) | 
		
	
		
			
			|  |  |  | console.dir(selectedinstance) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | try { | 
		
	
		
			
			|  |  |  | 
 |