| "use strict"; | "use strict"; | ||||
| var __g = require('global-this'); | var __g = require('global-this'); | ||||
| var ENV = Object.assign({}, process.env); // Shallow clone so we can set values and reuse for reshelling spawns. | var ENV = Object.assign({}, process.env); // Shallow clone so we can set values and reuse for reshelling spawns. | ||||
| __g.env = ENV | __g.env = ENV | ||||
| var statuslog = utils.Traq | var statuslog = utils.Traq | ||||
| var Traq = utils.Traq | var Traq = utils.Traq | ||||
| var ENV = Object.assign({}, process.env); // Shallow clone so we can set values and reuse for reshelling spawns. | var ENV = Object.assign({}, process.env); // Shallow clone so we can set values and reuse for reshelling spawns. | ||||
| const cliargs = utils.cliargs; | const cliargs = utils.cliargs; | ||||
| const processedArgs = cliargs(process.argv.slice(2)); | const processedArgs = cliargs(process.argv.slice(2)); | ||||
| // , 'undefined' : true | // , 'undefined' : true | ||||
| } | } | ||||
| var __default = { | |||||
| // Common baseline repos for all chess chessinstances. | |||||
| repos : [ | |||||
| { repo : 'ember-masonry-grid' /*, branch : master*/ } // Default need not be specified. | |||||
| , { repo : 'bbhverse' } | |||||
| , { repo : 'clientverse' } | |||||
| , { repo : 'serververse' } | |||||
| , { repo : 'elxr' } | |||||
| , { repo : 'ember-searchable-select' } | |||||
| , { repo : 'loopback-component-jsonapi' } | |||||
| , { repo : 'loopback-jsonapi-model-serializer' } | |||||
| , { repo : 'loopback-connector-mysql' } | |||||
| , { repo : 'loopback-connector-ds' } | |||||
| , { repo : 'ember-service-worker' } | |||||
| , { repo : 'ember-service-worker-asset-cache' } | |||||
| , { repo : 'ember-service-worker-cache-fallback' } | |||||
| , { repo : 'ember-service-worker-index' } | |||||
| , { repo : 'ember-sw-client-route' } | |||||
| , { repo : 'global-this' } | |||||
| ] | |||||
| // Requires elevation only in windows | |||||
| , elevated : [ { repo : 'chess-server-lib', requiresElevation : true } ] | |||||
| , exludeMergeRepos : { } | |||||
| }; // PB : TODO -- Use initialized instance instead of __default everywhere. | |||||
| var cmds = { | var cmds = { | ||||
| remote : { | remote : { | ||||
| interpret() { return utils.assign_core( { keycase: true, arraymergetype : utils.assign_core.DISTINCT_UNION } | interpret() { return utils.assign_core( { keycase: true, arraymergetype : utils.assign_core.DISTINCT_UNION } | ||||
| , switch : { | , switch : { | ||||
| interpret() { | interpret() { | ||||
| return { cmd : subcommandlabels['switch'], runchoice : 'c', username : processedArgs._[2] | return { cmd : subcommandlabels['switch'], runchoice : 'c', username : processedArgs._[2] | ||||
| , reposerver : __default.reposerver | |||||
| , reposerver : __default.reposerver // .?.?.? | |||||
| } | } | ||||
| } | } | ||||
| , getPossiblePrompts(){ return { username : true, reposerver : 'http://git.bbh' } } // Requires only one argument... | , getPossiblePrompts(){ return { username : true, reposerver : 'http://git.bbh' } } // Requires only one argument... | ||||
| var interpreted = this | var interpreted = this | ||||
| // Non custom command has universal positiona args. | // Non custom command has universal positiona args. | ||||
| processedArgs._[1] ? interpreted.instanceName = processedArgs._[1] : null; | processedArgs._[1] ? interpreted.instanceName = processedArgs._[1] : null; | ||||
| interpreted.runchoice = interpreted.cmd ? 'c' : null | |||||
| // interpreted.runchoice = processedArgs._[0] || selectedinstance.runchoice; | // interpreted.runchoice = processedArgs._[0] || selectedinstance.runchoice; | ||||
| // return clioverrides | // return clioverrides | ||||
| // cmds[cmd] = { | // cmds[cmd] = { | ||||
| if( shouldPrompt(k, possiblePrompts, target) ) { | if( shouldPrompt(k, possiblePrompts, target) ) { | ||||
| delete reconfirm[k]; | delete reconfirm[k]; | ||||
| // console.log(k) | // console.log(k) | ||||
| console.dir(possiblePrompts); //console.dir(target) | |||||
| // console.dir(possiblePrompts); //console.dir(target) | |||||
| prompts.push(async ()=>{ | prompts.push(async ()=>{ | ||||
| // PB : NOTE -- Important in async cases when this {{target}} needs to be in the same state as when it was invoked. | // PB : NOTE -- Important in async cases when this {{target}} needs to be in the same state as when it was invoked. | ||||
| // We need to take a snapshot... Shallow.. !! If required deep should be used based on use case. | // We need to take a snapshot... Shallow.. !! If required deep should be used based on use case. | ||||
| // PB : TODO -- Override cli prefs and call with undefined selectedinstance only if there is no cli overide or selection. | // PB : TODO -- Override cli prefs and call with undefined selectedinstance only if there is no cli overide or selection. | ||||
| acquirelocalinstances( { root : ENV.wd } ) | acquirelocalinstances( { root : ENV.wd } ) | ||||
| function createLocalChessInstance( cfg ){ | |||||
| // return createInstance(cfg) | |||||
| reconfirm = getReconfirmAll() | |||||
| var inst = {}; | |||||
| var __new = Object.assign({}, __default, cfg) | |||||
| inst[cfg.node_env] = __new; return inst; | |||||
| } | |||||
| if(chessinstances.error) { | if(chessinstances.error) { | ||||
| delete chessinstances.error | delete chessinstances.error | ||||
| // use installchoices only when we don't find chessinstances. | // use installchoices only when we don't find chessinstances. | ||||
| return pendingtasks.then((instance)=>{ | return pendingtasks.then((instance)=>{ | ||||
| // PB : TODO -- Embed defaults in the build instead of inlining here... | // PB : TODO -- Embed defaults in the build instead of inlining here... | ||||
| var __default = { | |||||
| // Common baseline repos for all chess chessinstances. | |||||
| repos : [ | |||||
| { repo : 'ember-masonry-grid' /*, branch : master*/ } // Default need not be specified. | |||||
| , { repo : 'bbhverse' } | |||||
| , { repo : 'clientverse' } | |||||
| , { repo : 'serververse' } | |||||
| , { repo : 'elxr' } | |||||
| , { repo : 'ember-searchable-select' } | |||||
| , { repo : 'loopback-component-jsonapi' } | |||||
| , { repo : 'loopback-jsonapi-model-serializer' } | |||||
| , { repo : 'loopback-connector-mysql' } | |||||
| , { repo : 'loopback-connector-ds' } | |||||
| , { repo : 'ember-service-worker' } | |||||
| , { repo : 'ember-service-worker-asset-cache' } | |||||
| , { repo : 'ember-service-worker-cache-fallback' } | |||||
| , { repo : 'ember-service-worker-index' } | |||||
| , { repo : 'ember-sw-client-route' } | |||||
| , { repo : 'global-this' } | |||||
| ] | |||||
| // Requires elevation only in windows | |||||
| , elevated : [ { repo : 'chess-server-lib', requiresElevation : true } ] | |||||
| , exludeMergeRepos : { } | |||||
| }; // PB : TODO -- Use initialized instance instead of __default everywhere. | |||||
| // PB : TODO -- All these values instanceName, node_env, username, reposervers should come from instace overridden by a finalized cliovrrides... | // PB : TODO -- All these values instanceName, node_env, username, reposervers should come from instace overridden by a finalized cliovrrides... | ||||
| // Also attepmt to load preconfig specially for new chessinstances from ../chess-config/... | // Also attepmt to load preconfig specially for new chessinstances from ../chess-config/... | ||||
| , instance_specific_config_manifest | , instance_specific_config_manifest | ||||
| , clioverrides | , clioverrides | ||||
| ) | ) | ||||
| console.dir(__pvt) | |||||
| // console.dir(__pvt) | |||||
| // Unmergable server overrides | // Unmergable server overrides | ||||
| Object.keys(instance_specific_config_manifest).forEach( key => { | Object.keys(instance_specific_config_manifest).forEach( key => { | ||||
| __pvt[key] = instance_specific_config_manifest[key] | __pvt[key] = instance_specific_config_manifest[key] | ||||
| } | } | ||||
| // promptkeys.runchoice = promptkeys.cmd ? 'c' : undefined | // promptkeys.runchoice = promptkeys.cmd ? 'c' : undefined | ||||
| function createLocalChessInstance( cfg ){ | |||||
| // return createInstance(cfg) | |||||
| reconfirm = getReconfirmAll() | |||||
| var inst = {}; | |||||
| var __new = Object.assign({}, __default, cfg) | |||||
| inst[cfg.node_env] = __new; return inst; | |||||
| } | |||||
| var choices = { | var choices = { | ||||
| 'instanceName' : [] | 'instanceName' : [] | ||||
| , 'reposerver' : [] | , 'reposerver' : [] | ||||
| var remotes = []; | var remotes = []; | ||||
| var instanceNames = [] | var instanceNames = [] | ||||
| var instanceTypes = ['development', 'production']; | var instanceTypes = ['development', 'production']; | ||||
| // Accumulate all known choices from every possible instance... | |||||
| Object.keys( chessinstances).forEach(instanceName => { | Object.keys( chessinstances).forEach(instanceName => { | ||||
| if(instanceName === 'current_run') return; | |||||
| if(instanceName === 'current_run') return ; | |||||
| Object.keys( chessinstances[instanceName] ).forEach(node_env=>{ | Object.keys( chessinstances[instanceName] ).forEach(node_env=>{ | ||||
| var instance = chessinstances[instanceName][node_env]; | var instance = chessinstances[instanceName][node_env]; | ||||
| reposervers = reposervers.concat(instance.reposervers) | reposervers = reposervers.concat(instance.reposervers) | ||||
| // if(cmdprompts.instanceName) { | // if(cmdprompts.instanceName) { | ||||
| // not an instanceless cmd. | // not an instanceless cmd. | ||||
| console.dir(selectedinstance) | |||||
| // console.dir(selectedinstance) | |||||
| try { | try { | ||||
| // chessinstances = acquirelocalinstances(selectedinstance); | // chessinstances = acquirelocalinstances(selectedinstance); |