| function getVersion() { return BUILD_VERSION; } | function getVersion() { return BUILD_VERSION; } | ||||
| console.log(getVersion()); | console.log(getVersion()); | ||||
| // 'use strict'; | // 'use strict'; | ||||
| // PB : TODO -- make sure folder context is proper coz we can now run elxr from anywhere. | // PB : TODO -- make sure folder context is proper coz we can now run elxr from anywhere. | ||||
| // } | // } | ||||
| // }) | // }) | ||||
| var subcommandlabels = { | |||||
| remote : (`remote ${processedArgs._[1] || ''}`).trim() | |||||
| // | |||||
| // elxr cli operations | |||||
| var noprerequisites = { | |||||
| add : true, 'set-url' : true, 'repo-relocate' : true | |||||
| , remote : true, 'c' : true, 'h' : true | |||||
| , httpget : true, getuser : true | |||||
| , 'switch user' : true | |||||
| , 'switch' : true | |||||
| // , 'undefined' : true | |||||
| } | } | ||||
| var interpretrun = function(){ | |||||
| var reconfirmcmds = { create : true } | |||||
| var subcommandlabels = { | |||||
| remote : (`remote ${processedArgs._[1] || ''}`).trim() | |||||
| , switch : (`switch ${processedArgs._[1] || ''}`).trim() | |||||
| } | |||||
| var cmds = { | |||||
| 'remote' : function() { | |||||
| var cmds = { | |||||
| remote : { | |||||
| // return a interpreted set of arguments for this comd run context. | |||||
| interpret() { | |||||
| return { cmd : subcommandlabels['remote'], runchoice : 'c' } | return { cmd : subcommandlabels['remote'], runchoice : 'c' } | ||||
| } | } | ||||
| } | } | ||||
| , switch : { | |||||
| interpret() { | |||||
| return { cmd : subcommandlabels['switch'], runchoice : 'c', username : processedArgs._[2] | |||||
| , reposerver : __default.reposerver | |||||
| } | |||||
| } | |||||
| , getPossiblePrompts(){ return { username : true, reposerver : 'http://git.bbh' } } // Requires only one argument... | |||||
| } | |||||
| , 'switch user' : { | |||||
| interpret() { | |||||
| return { cmd : subcommandlabels['switch'], runchoice : 'c', username : processedArgs._[2] } | |||||
| } | |||||
| , getPossiblePrompts(){ return { username : true } } // Requires only one argument... | |||||
| } | |||||
| } | |||||
| var interpretrun = function(){ | |||||
| var cmd = processedArgs._[0]; | var cmd = processedArgs._[0]; | ||||
| var clioverrides = { cmd } | var clioverrides = { cmd } | ||||
| : (process.env.NODE_ENV && process.env.NODE_ENV.trim()) | : (process.env.NODE_ENV && process.env.NODE_ENV.trim()) | ||||
| ? clioverrides.node_env = (process.env.NODE_ENV && process.env.NODE_ENV.trim()) : null; | ? clioverrides.node_env = (process.env.NODE_ENV && process.env.NODE_ENV.trim()) : null; | ||||
| return cmds[cmd] ? cmds[cmd]() : (function(){ | |||||
| return cmds[cmd] ? cmds[cmd].interpret() : (function(){ | |||||
| processedArgs._[1] ? clioverrides.instanceName = processedArgs._[1]: null; | processedArgs._[1] ? clioverrides.instanceName = processedArgs._[1]: null; | ||||
| return clioverrides | |||||
| // return clioverrides | |||||
| cmds[cmd] = { | |||||
| interpret() { | |||||
| return Object.assign(clioverrides, { cmd, runchoice : 'c' }) | |||||
| } | |||||
| , getPossiblePrompts(){ return { cmd, username : true, password : true, | |||||
| instanceName : true, instanceType : true, reposerver : true } } | |||||
| } | |||||
| return cmds[cmd].interpret() | |||||
| })() | })() | ||||
| } | } | ||||
| var clioverrides = interpretrun() | var clioverrides = interpretrun() | ||||
| console.dir(clioverrides) | console.dir(clioverrides) | ||||
| var useGitPull = processedArgs.useGitPull || false; | var useGitPull = processedArgs.useGitPull || false; | ||||
| var configPromise = null | var configPromise = null | ||||
| // elxr cli operations | |||||
| var noprerequisites = { | |||||
| add : true, 'set-url' : true, 'repo-relocate' : true | |||||
| , remote : true, 'c' : true, 'h' : true | |||||
| , httpget : true, getuser : true | |||||
| // , 'undefined' : true | |||||
| } | |||||
| var reconfirmcmds = { create : true } | |||||
| var op = { | var op = { | ||||
| 'h': () => { console.log(elxr.help()); return '-h' } | 'h': () => { console.log(elxr.help()); return '-h' } | ||||
| //Switch to target branch | //Switch to target branch | ||||
| .then( () => { | .then( () => { | ||||
| if(!mergesource || branch === mergesource ) return Promise.resolve(true) | if(!mergesource || branch === mergesource ) return Promise.resolve(true) | ||||
| return any(elevatedRunasRepos.map((repodef) => performCheckout({ repo : repodef.repo, branch}))) | |||||
| return any(gitRepos.map((repodef) => performCheckout({ repo : repodef.repo, branch}))) | |||||
| }) | }) | ||||
| .then( //Merge source branch to target branch | .then( //Merge source branch to target branch | ||||
| () => { | () => { | ||||
| return createInstance(selectedinstance) } | return createInstance(selectedinstance) } | ||||
| , 'httpget' : () => { | , 'httpget' : () => { | ||||
| // HTTPAPI.get({ | |||||
| // RESTAPI.get({ | |||||
| // hostname: 'git.bbh', | // hostname: 'git.bbh', | ||||
| // // port: 443, | // // port: 443, | ||||
| // protocol : 'http:', | // protocol : 'http:', | ||||
| , 'getuser' : ()=>{ | , 'getuser' : ()=>{ | ||||
| return prerequisites.git.getuser().then(u=>{ console.log(u)}) | return prerequisites.git.getuser().then(u=>{ console.log(u)}) | ||||
| } | } | ||||
| , 'switch user' : (tousername)=>{ | |||||
| return GIT['switch user'](tousername) | |||||
| } | |||||
| } | } | ||||
| var util = require('util'); | var util = require('util'); | ||||
| } | } | ||||
| else { var reconfirm = {}; } | else { var reconfirm = {}; } | ||||
| var shouldPrompt = function(k, mustPrompt, target){ | |||||
| return ((mustPrompt[k] !== undefined && mustPrompt[k] !== null) && target[k] !== mustPrompt[k] | |||||
| || (mustPrompt[k] === undefined || mustPrompt[k] === null) && (target[k] === undefined || target[k] === null) | |||||
| var shouldPrompt = function(k, possiblePrompts, target){ | |||||
| return ((possiblePrompts[k] !== undefined && possiblePrompts[k] !== null) && target[k] !== possiblePrompts[k] | |||||
| || (possiblePrompts[k] === undefined || possiblePrompts[k] === null) && (target[k] === undefined || target[k] === null) | |||||
| || reconfirm[k]) | || reconfirm[k]) | ||||
| } | } | ||||
| var getBoundEachPrompt = function(target, mustPrompt, promptables, choices, promptsfilter) { | |||||
| var getBoundEachPrompt = function(target, possiblePrompts, promptables, choices, promptsfilter) { | |||||
| return function(prompts, k, i, a){ | return function(prompts, k, i, a){ | ||||
| // No local instances config found. We use a default initialized instance available in selectedinstance | // 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. | // Confirm those that were not supplied as user choices in runtime args and proceed to reattempt. | ||||
| // PB : TODO -- selectedinstance === __default check to prompt everything... | // PB : TODO -- selectedinstance === __default check to prompt everything... | ||||
| if( shouldPrompt(k, mustPrompt, target) ) { | |||||
| if( shouldPrompt(k, possiblePrompts, target) ) { | |||||
| delete reconfirm[k]; | delete reconfirm[k]; | ||||
| // console.log(k) | // console.log(k) | ||||
| // console.dir(mustPrompt); //console.dir(target) | |||||
| // console.dir(possiblePrompts); //console.dir(target) | |||||
| prompts.push(async ()=>{ | prompts.push(async ()=>{ | ||||
| // PB : NOTE -- Important in async cases when this needs to be in the same state as when it was invoked. | // 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. | // We take a snapshot... Shallow.. !! If required deep should be used based on use case. | ||||
| return await target[k] | return await target[k] | ||||
| }) | }) | ||||
| } | } | ||||
| delete mustPrompt[k] | |||||
| delete possiblePrompts[k] // PB : TODO We should keep this around instead of deleting so we can do a second pass if required. | |||||
| return prompts | return prompts | ||||
| } | } | ||||
| } | } | ||||
| var selectedinstance = null; | var selectedinstance = null; | ||||
| var chessinstances = { current_run : {} }; | var chessinstances = { current_run : {} }; | ||||
| var promptkeys = { | var promptkeys = { | ||||
| cmd : processedArgs._[0] | |||||
| cmd : processedArgs._[0] || 'pull' | |||||
| // Try not to prompt anything unless absolutely necessary or reconfirm is forced. | // Try not to prompt anything unless absolutely necessary or reconfirm is forced. | ||||
| // 'instanceName' : true | // 'instanceName' : true | ||||
| // , 'node_env' : true | // , 'node_env' : true | ||||
| , username : '' | |||||
| // , username : '' | |||||
| // , runchoice : 'c' | |||||
| } | } | ||||
| promptkeys.runchoice = promptkeys.cmd ? 'c' : undefined | |||||
| // promptkeys.runchoice = promptkeys.cmd ? 'c' : undefined | |||||
| function createChessInsance( cfg ){ | function createChessInsance( cfg ){ | ||||
| var inst = {}; | var inst = {}; | ||||
| , username : ['guest', 'chessdemo', 'demo'] | , username : ['guest', 'chessdemo', 'demo'] | ||||
| } | } | ||||
| var getInteractionPoints = function(detectedinstanceoptions, promptkeys, promptsfilter){ | |||||
| var getInteractionPoints = function(detectedinstanceoptions, possiblePrompts, promptsfilter){ | |||||
| var instances = [] | var instances = [] | ||||
| var reposervers = []; | var reposervers = []; | ||||
| var instnaceNames = [] | |||||
| var instanceNames = [] | |||||
| var instanceTypes = ['development', 'production']; | var instanceTypes = ['development', 'production']; | ||||
| Object.keys( chessinstances).forEach(instanceName => { | Object.keys( chessinstances).forEach(instanceName => { | ||||
| if(instanceName === 'current_run') return; | if(instanceName === 'current_run') return; | ||||
| if(instance.reposerver) reposervers.push(instance.reposerver) | if(instance.reposerver) reposervers.push(instance.reposerver) | ||||
| instances.push(instance) | instances.push(instance) | ||||
| instanceTypes.push(instance.node_env) | instanceTypes.push(instance.node_env) | ||||
| instnaceNames.push(instance.instanceName) | |||||
| instanceNames.push(instance.instanceName) | |||||
| }) | }) | ||||
| }) | }) | ||||
| instances = instances.concat(detectedinstanceoptions) | instances = instances.concat(detectedinstanceoptions) | ||||
| if(selectedinstance['instanceName']) instnaceNames.push(selectedinstance['instanceName']) | |||||
| if(promptkeys['instanceName']) instnaceNames.push(promptkeys['instanceName']) | |||||
| if(selectedinstance['instanceName']) instanceNames.push(selectedinstance['instanceName']) | |||||
| if(possiblePrompts['instanceName']) instanceNames.push(possiblePrompts['instanceName']) | |||||
| if(selectedinstance['reposervers']) reposervers = reposervers.concat(selectedinstance['reposervers']) | if(selectedinstance['reposervers']) reposervers = reposervers.concat(selectedinstance['reposervers']) | ||||
| choices['instanceName'] = Array.from( new Set(instnaceNames.concat(choices['instanceName'])) ) | |||||
| choices['instanceName'] = Array.from( new Set(instanceNames.concat(choices['instanceName'])) ) | |||||
| choices['reposerver'] = Array.from( new Set(reposervers.concat(choices['reposerver'])) ) | choices['reposerver'] = Array.from( new Set(reposervers.concat(choices['reposerver'])) ) | ||||
| choices['instanceType'] = Array.from( new Set(instanceTypes.concat(choices['instanceType'])) ) | choices['instanceType'] = Array.from( new Set(instanceTypes.concat(choices['instanceType'])) ) | ||||
| const https = require('https') | const https = require('https') | ||||
| const http = require('http') | const http = require('http') | ||||
| const HTTPAPI = (function(){ | |||||
| const RESTAPI = (function(){ | |||||
| // Singleton | // Singleton | ||||
| function HTTPAPI(){} | |||||
| // HTTPAPI.create = HTTPAPI; // Returns the one singe instance which is the class itself | |||||
| HTTPAPI.post = function(options, jsonpostpayload, resolve, reject){ | |||||
| var _post = function(options, jsonpostpayload, resolve, reject) { | |||||
| console.dir(options) | |||||
| console.dir(jsonpostpayload) | |||||
| const data = new TextEncoder().encode( | |||||
| JSON.stringify(jsonpostpayload) | |||||
| ) | |||||
| options.headers = options.headers || { | |||||
| 'Content-Type': 'application/json', | |||||
| 'Content-Length': data.length | |||||
| function RESTAPI(){} | |||||
| // RESTAPI.create = RESTAPI; // Returns the one singe instance which is the class itself | |||||
| // const options = { | |||||
| // hostname: 'whatever.com', | |||||
| // port: 443, | |||||
| // path: '/todos', | |||||
| // method: 'POST', | |||||
| // headers: { | |||||
| // 'Content-Type': 'application/json', | |||||
| // 'Content-Length': data.length | |||||
| // } | |||||
| // } | |||||
| RESTAPI.method = function(options, resolve, reject){ | |||||
| var __method = function() { | |||||
| options.headers = options.headers || { 'Content-Type': 'application/json' } | |||||
| if(options.payload) { | |||||
| const data = new TextEncoder().encode( JSON.stringify(options.payload) ) | |||||
| options.headers = options.headers || { | |||||
| 'Content-Type': 'application/json', | |||||
| 'Content-Length': data.length | |||||
| } | |||||
| } | } | ||||
| if(!options.authenticatepost) options.headers.Authorization = `token ${usertokens[options.username]}` | if(!options.authenticatepost) options.headers.Authorization = `token ${usertokens[options.username]}` | ||||
| // const options = { | |||||
| // hostname: 'whatever.com', | |||||
| // port: 443, | |||||
| // path: '/todos', | |||||
| // method: 'POST', | |||||
| // headers: { | |||||
| // 'Content-Type': 'application/json', | |||||
| // 'Content-Length': data.length | |||||
| // } | |||||
| // } | |||||
| var acquirer = getHTTP_S(options) | |||||
| var acquirer = getHTTPorS(options) | |||||
| const req = acquirer.request(options, res => { | const req = acquirer.request(options, res => { | ||||
| if (res.statusCode < 200 || res.statusCode >= 300) { | if (res.statusCode < 200 || res.statusCode >= 300) { | ||||
| return reject(new Error('statusCode=' + res.statusCode)); | return reject(new Error('statusCode=' + res.statusCode)); | ||||
| } | } | ||||
| var body = []; | var body = []; | ||||
| // res.setEncoding('utf8'); | |||||
| res.on('data', function(chunk) { | res.on('data', function(chunk) { | ||||
| body.push(chunk); | body.push(chunk); | ||||
| }); | }); | ||||
| reject(error) | reject(error) | ||||
| }) | }) | ||||
| req.write(data) | |||||
| if(options.payload) req.write(data) | |||||
| req.end() | req.end() | ||||
| } | } | ||||
| if(!options.authenticatepost && !usertokens[options.username]) { | if(!options.authenticatepost && !usertokens[options.username]) { | ||||
| HTTPAPI.authenticate(options, function(tokenresp){ | |||||
| RESTAPI.authenticate(options, function(tokenresp){ | |||||
| usertokens[options.username] = tokenresp.sha1 | usertokens[options.username] = tokenresp.sha1 | ||||
| _post(options, jsonpostpayload, resolve, reject) | |||||
| __method(options, resolve, reject) | |||||
| }, | }, | ||||
| function(err){ throw err} | function(err){ throw err} | ||||
| ) | ) | ||||
| } | } | ||||
| else _post(options, jsonpostpayload, resolve, reject) | |||||
| else __method(options, resolve, reject) | |||||
| } | } | ||||
| RESTAPI.post = RESTAPI.method | |||||
| var usertokens = {} | var usertokens = {} | ||||
| HTTPAPI.authenticate = function(options, resolve, reject){ | |||||
| RESTAPI.authenticate = function(options, resolve, reject){ | |||||
| options.headers = options.headers || { 'Content-Type': 'application/json' } | options.headers = options.headers || { 'Content-Type': 'application/json' } | ||||
| if(!usertokens[options.username]) { | if(!usertokens[options.username]) { | ||||
| // Authenticate and acquire token. | // Authenticate and acquire token. | ||||
| // https://git.bbh/api/v1/users/<username>/tokens | // https://git.bbh/api/v1/users/<username>/tokens | ||||
| var postoptions = { name : _options.username } | var postoptions = { name : _options.username } | ||||
| delete _options.username | delete _options.username | ||||
| delete _options.password | delete _options.password | ||||
| HTTPAPI.post( _options, postoptions, function(tokenresp){ | |||||
| _options.payload = postoptions | |||||
| RESTAPI.post( _options, function(tokenresp){ | |||||
| // tokenresp = JSON.parse(tokenresp) | // tokenresp = JSON.parse(tokenresp) | ||||
| usertokens[options.username] = tokenresp.sha1 | usertokens[options.username] = tokenresp.sha1 | ||||
| resolve(tokenresp) | resolve(tokenresp) | ||||
| else resolve(tokenresp.sha1) | else resolve(tokenresp.sha1) | ||||
| } | } | ||||
| HTTPAPI.get = function(options, resolve, reject){ | |||||
| options.headers = options.headers || { 'Content-Type': 'application/json' } | |||||
| if(!usertokens[options.username]) { | |||||
| HTTPAPI.authenticate(options, function(tokenresp){ | |||||
| usertokens[options.username] = tokenresp.sha1 | |||||
| _get(options, resolve, reject) | |||||
| }, | |||||
| function(err){ throw err} | |||||
| ) | |||||
| } | |||||
| else _get(options, resolve, reject) | |||||
| var _get = function() { | |||||
| options.headers.Authorization = `token ${usertokens[options.username]}` | |||||
| // const options = { | |||||
| // hostname: 'whatever.com', | |||||
| // port: 443, | |||||
| // path: '/todos', | |||||
| // method: 'POST', | |||||
| // headers: { | |||||
| // 'Content-Type': 'application/json', | |||||
| // 'Content-Length': data.length | |||||
| // } | |||||
| // } | |||||
| var acquirer = getHTTP_S(options) | |||||
| const req = acquirer.request(options, res => { | |||||
| if (res.statusCode < 200 || res.statusCode >= 300) { | |||||
| return reject(new Error('statusCode=' + res.statusCode)); | |||||
| } | |||||
| var body = []; | |||||
| res.setEncoding('utf8'); | |||||
| res.on('data', function(chunk) { | |||||
| body.push(chunk); | |||||
| }); | |||||
| res.on('end', function() { | |||||
| try { | |||||
| body = JSON.parse(Buffer.concat(body).toString()); | |||||
| } catch(e) { | |||||
| reject(e); | |||||
| } | |||||
| resolve(body); | |||||
| }); | |||||
| }); | |||||
| req.on('error', error => { | |||||
| console.error(error) | |||||
| reject(error) | |||||
| }) | |||||
| req.end() | |||||
| } | |||||
| } | |||||
| RESTAPI.get = RESTAPI.post = RESTAPI.method | |||||
| return HTTPAPI | |||||
| return RESTAPI | |||||
| })(); | })(); | ||||
| var getHTTP_S = function(options){ return options.protocol.startsWith('https') ? https : http; } | |||||
| var getHTTPorS = function(options){ return options.protocol.startsWith('https') ? https : http; } | |||||
| const GITEA = (function(){ | const GITEA = (function(){ | ||||
| // http://try.gitea.io/api/v1/repos/{owner}/{repo}/forks | // http://try.gitea.io/api/v1/repos/{owner}/{repo}/forks | ||||
| httpoptions.path = `/api/v1/repos/${cmdoptions.owner}/${cmdoptions.repo}/forks` | httpoptions.path = `/api/v1/repos/${cmdoptions.owner}/${cmdoptions.repo}/forks` | ||||
| httpoptions.method = 'POST' | httpoptions.method = 'POST' | ||||
| return HTTPAPI.post(httpoptions, giteaoptions, resolve || function(){}, reject || function(){} ) | |||||
| httpoptions.payload = giteaoptions; | |||||
| return RESTAPI.post(httpoptions, resolve || function(){}, reject || function(){} ) | |||||
| } | } | ||||
| , updateattributes( httpoptions, cmdoptions, giteaoptions, resolve, reject ){ | , updateattributes( httpoptions, cmdoptions, giteaoptions, resolve, reject ){ | ||||
| httpoptions.path = `/api/v1/repos/${cmdoptions.owner}/${cmdoptions.repo}` | httpoptions.path = `/api/v1/repos/${cmdoptions.owner}/${cmdoptions.repo}` | ||||
| httpoptions.method = 'PATCH' | httpoptions.method = 'PATCH' | ||||
| return HTTPAPI.post(httpoptions, giteaoptions, resolve || function(){}, reject || function(){} ) | |||||
| httpoptions.payload = giteaoptions; | |||||
| return RESTAPI.post(httpoptions, resolve || function(){}, reject || function(){} ) | |||||
| } | } | ||||
| } | } | ||||
| GITEA.user = { | |||||
| getuser( httpoptions, cmdoptions, giteaoptions, resolve, reject ){ | |||||
| // /users/{username} // Get a user | |||||
| httpoptions.path = `/api/v1/users/${httpoptions.username}` | |||||
| httpoptions.method = 'GET' | |||||
| return RESTAPI.get(httpoptions, giteaoptions, resolve || function(){}, reject || function(){} ) | |||||
| } | |||||
| } | |||||
| return GITEA | return GITEA | ||||
| })(); | })(); | ||||
| // Wrapper for Git shell operations. Some meta operations will map to a bunch of GIT commands. | |||||
| const GIT = (function(){ | |||||
| function GIT(){} | |||||
| Object.assign(GIT, { | |||||
| 'switch user'(username){ | |||||
| var server = new URL(selectedinstance.reposerver); | |||||
| return GITEA.user.getuser({ hostname : server.host, protocol : server.protocol | |||||
| , username : selectedinstance.username, password : selectedinstance.password | |||||
| }).then(()=>{ | |||||
| return nodeShellExec('git', ['config', '--replace-all', 'user.name', username], | |||||
| { | |||||
| inherit: true, shell: true, | |||||
| env: process.env | |||||
| , cwd: instanceroot + '/' + repo | |||||
| , runas: processedArgs.runas | |||||
| , title: `git core.symlinks --replace-all true for ${selectedinstance.reposerver + `/${defaultRepoOwner}/` + repo + '.git'}` | |||||
| }) | |||||
| } | |||||
| ) | |||||
| .catch(e => { | |||||
| console.error(e + 'Could not switch. Probably no such user.') | |||||
| }) | |||||
| } | |||||
| }) | |||||
| return GIT | |||||
| })(); | |||||
| function createInstance(selectedinstance) { | function createInstance(selectedinstance) { | ||||
| // http://try.gitea.io/api/v1/org/{org}/repos | // http://try.gitea.io/api/v1/org/{org}/repos | ||||
| detectedinstanceoptions.splice(0,0, __default) | detectedinstanceoptions.splice(0,0, __default) | ||||
| var cmdinstance = cmds[clioverrides.cmd] | |||||
| var cmdprompts = cmdinstance.getPossiblePrompts() | |||||
| // PB : TODO -- Most recent should be at the tip ! at index 0 so utils.reverseassign is required !!! | // PB : TODO -- Most recent should be at the tip ! at index 0 so utils.reverseassign is required !!! | ||||
| selectedinstance = utils.assign( ...detectedinstanceoptions.slice(-2), promptkeys ) | selectedinstance = utils.assign( ...detectedinstanceoptions.slice(-2), promptkeys ) | ||||
| // promptkeys = utils.assign(promptkeys, clioverrides) | // promptkeys = utils.assign(promptkeys, clioverrides) | ||||
| console.dir(selectedinstance) | |||||
| try { | |||||
| chessinstances = acquirelocalinstances(selectedinstance); | |||||
| findlocalinstances(chessinstances, detectedinstanceoptions) | |||||
| initinstances(selectedinstance) // use the local instances for defaults if at all possible. | |||||
| var todo = any( getInteractionPoints(detectedinstanceoptions, promptkeys) ).then(()=>{ | |||||
| var inst = initinstances(selectedinstance) | |||||
| detection_state.didWeFindInstance = true; | |||||
| return inst; | |||||
| }) | |||||
| } | |||||
| catch (e) { | |||||
| // PB : TODO -- verbose mode warning.. console.warn(e) // Missing chessinstances is not an error... | |||||
| var todo = any( getInteractionPoints(detectedinstanceoptions, promptkeys) ).then(()=>{ | |||||
| return initinstances(selectedinstance) | |||||
| }) | |||||
| // if(!processedArgs._[0] || !selectedinstance.node_env || !selectedinstance.instanceName){ | |||||
| // // Weve not been told what to do. | |||||
| // todo = todo.then(() => { return acquireChoices(selectedinstance) }) | |||||
| // } | |||||
| if(cmdprompts.instanceName) { | |||||
| // not an instanceless cmd. | |||||
| console.dir(selectedinstance) | |||||
| try { | |||||
| todo = todo.then(() => { | |||||
| try { | |||||
| chessinstances = acquirelocalinstances(selectedinstance) | |||||
| findlocalinstances(chessinstances, detectedinstanceoptions) | |||||
| detectedinstanceoptions.splice(0,0, __default) | |||||
| initinstances(selectedinstance) | |||||
| chessinstances = acquirelocalinstances(selectedinstance); | |||||
| findlocalinstances(chessinstances, detectedinstanceoptions) | |||||
| initinstances(selectedinstance) // use the local instances for defaults if at all possible. | |||||
| var todo = any( getInteractionPoints(detectedinstanceoptions, promptkeys) ).then(()=>{ | |||||
| var inst = initinstances(selectedinstance) | |||||
| detection_state.didWeFindInstance = true; | detection_state.didWeFindInstance = true; | ||||
| } | |||||
| catch (e) { | |||||
| // console.error(e) | |||||
| console.log('No local instances config found in current root = ' + selectedinstance.root); | |||||
| console.log('A config will be createed with the instance and environment chosen...') | |||||
| // return (async ()=>{return await __default.reposerver})().then(()=>{ | |||||
| // // selectedinstance = Object.assign(detectedInstance, clioverrides); | |||||
| // return selectedinstance = Object.assign(__default, selectedinstance); | |||||
| // }) | |||||
| detection_state.didWeFindInstance = false; | |||||
| return selectedinstance | |||||
| } | |||||
| }) | |||||
| return inst; | |||||
| }) | |||||
| } | |||||
| catch (e) { | |||||
| // PB : TODO -- verbose mode warning.. console.warn(e) // Missing chessinstances is not an error... | |||||
| var todo = any( getInteractionPoints(detectedinstanceoptions, promptkeys) ).then(()=>{ | |||||
| return initinstances(selectedinstance) | |||||
| }) | |||||
| // if(!processedArgs._[0] || !selectedinstance.node_env || !selectedinstance.instanceName){ | |||||
| // // Weve not been told what to do. | |||||
| // todo = todo.then(() => { return acquireChoices(selectedinstance) }) | |||||
| // } | |||||
| todo = todo.then(() => { | |||||
| try { | |||||
| chessinstances = acquirelocalinstances(selectedinstance) | |||||
| findlocalinstances(chessinstances, detectedinstanceoptions) | |||||
| detectedinstanceoptions.splice(0,0, __default) | |||||
| initinstances(selectedinstance) | |||||
| detection_state.didWeFindInstance = true; | |||||
| } | |||||
| catch (e) { | |||||
| // console.error(e) | |||||
| console.log('No local instances config found in current root = ' + selectedinstance.root); | |||||
| console.log('A config will be createed with the instance and environment chosen...') | |||||
| // return (async ()=>{return await __default.reposerver})().then(()=>{ | |||||
| // // selectedinstance = Object.assign(detectedInstance, clioverrides); | |||||
| // return selectedinstance = Object.assign(__default, selectedinstance); | |||||
| // }) | |||||
| detection_state.didWeFindInstance = false; | |||||
| return selectedinstance | |||||
| } | |||||
| }) | |||||
| } | |||||
| return todo | |||||
| } | } | ||||
| return todo | |||||
| else return Promise.resolve(true) | |||||
| }) | }) | ||||
| .then(()=>{ | .then(()=>{ | ||||