| var cli = require('./cliverse') | var cli = require('./cliverse') | ||||
| var nodeShellExec = cli.nodeShellExec; | var nodeShellExec = cli.nodeShellExec; | ||||
| var chalk = require('chalk') | var chalk = require('chalk') | ||||
| const homedir = require('os').homedir(); | |||||
| // singleton one time lazy | |||||
| var getCredentials = function(){ | |||||
| // First call | |||||
| var creds = fs.readFileSync(path.normalize(`${homedir}/.elxrcredentials`), { encoding: 'utf8' }); | |||||
| var creds = creds.split('\n').map( c => c.trim() && new URL(c)); | |||||
| console.log(creds); | |||||
| // Subsequent calls | |||||
| getCredentials = ()=>{ return creds } | |||||
| return getCredentials(); | |||||
| } | |||||
| const __ALIAS__STAMP__ = '9e7bebe0-1f57-11ec-8f88-778ffeea9d1b' | const __ALIAS__STAMP__ = '9e7bebe0-1f57-11ec-8f88-778ffeea9d1b' | ||||
| const BUILD_VERSION = '[VI]Version: {version} - built on {date}[/VI]'; | const BUILD_VERSION = '[VI]Version: {version} - built on {date}[/VI]'; | ||||
| // | // | ||||
| // 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 reconfirmcmds = { create : true } | |||||
| var subcommandlabels = { | |||||
| remote : (`remote ${processedArgs._[1] || ''}`).trim() | |||||
| , switch : (`switch ${processedArgs._[1] || ''}`).trim() | |||||
| } | |||||
| var cmds = { | |||||
| remote : { | |||||
| // return a interpreted set of arguments for this comd run context. | |||||
| interpret() { | |||||
| 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 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].interpret() : (function(){ | |||||
| processedArgs._[1] ? clioverrides.instanceName = processedArgs._[1]: null; | |||||
| // 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() | |||||
| console.dir(clioverrides) | |||||
| // Object.keys(clioverrides).forEach( prop => { }) | // Object.keys(clioverrides).forEach( prop => { }) | ||||
| g[processedArgs._[1]](); | g[processedArgs._[1]](); | ||||
| } | } | ||||
| , 'create' : () => { | |||||
| return createInstance(selectedinstance) } | |||||
| , 'create' : () => { return createInstance(selectedinstance) } | |||||
| , 'httpget' : () => { | , 'httpget' : () => { | ||||
| // RESTAPI.get({ | // RESTAPI.get({ | ||||
| return createInstance(selectedinstance) | return createInstance(selectedinstance) | ||||
| } | } | ||||
| , 'getuser' : ()=>{ | |||||
| return prerequisites.git.getuser().then(u=>{ console.log(u)}) | |||||
| , 'getuser' : ()=>{ return prerequisites.git.getuser().then(u=>{ console.log(u)}) } | |||||
| , 'switch user' : (tousername)=>{ return GIT['switch user'](tousername) } | |||||
| } | |||||
| // 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 reconfirmcmds = { create : true } | |||||
| var subcommandlabels = { | |||||
| remote : (`remote ${processedArgs._[1] || ''}`).trim() | |||||
| , switch : (`switch ${processedArgs._[1] || ''}`).trim() | |||||
| } | |||||
| var cmds = { | |||||
| remote : { | |||||
| // return a interpreted set of arguments for this comd run context. | |||||
| interpret() { | |||||
| 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... | |||||
| } | |||||
| // Flat linear structure. Every subcommand should have a top level 'label' | |||||
| , 'users' : { | |||||
| // default to the users list | |||||
| subcommands : { list : {} } | |||||
| , cmdFn : ()=>getCredentials() // default | |||||
| , cmd : 'users' | |||||
| , noprerequisites : true | |||||
| } | } | ||||
| , 'users list' : { | |||||
| cmdFn : ()=>getCredentials() | |||||
| , cmd : 'users list' | |||||
| , noprerequisites : true | |||||
| } | |||||
| } | |||||
| var elxrcmd = (function(){ | |||||
| , 'switch user' : (tousername)=>{ | |||||
| return GIT['switch user'](tousername) | |||||
| __cmdprototype = function(){} | |||||
| function subcommandlabelFor(cmd, sub){ return (`${cmd} ${sub || ''}`).trim() } | |||||
| var __cmd = { | |||||
| interpret() { return { cmd : this.cmd } } | |||||
| , getPossiblePrompts(){ return {} } // Requires only one argument... | |||||
| , cmdFn : ()=>{ throw "Elxr Unknown command."} | |||||
| , finalized : true | |||||
| } | } | ||||
| function __createO(o){ | |||||
| if(o.finalized) return o; | |||||
| var subs = Object.keys(cmds[o.cmd].subcommands || {}) | |||||
| console.log(subs) | |||||
| console.log(o) | |||||
| subs.forEach(sub=>elxrcmd.create( cmds[subcommandlabelFor(o.cmd, sub)] )) | |||||
| var created = utils.assign_strict({}, __cmd, cmds[o.cmd], o) | |||||
| cmds[o.cmd] = created; | |||||
| op[o.cmd] = created.cmdFn; | |||||
| noprerequisites[o.cmd] = created.noprerequisites | |||||
| return created.cmdFn; | |||||
| } | |||||
| function create(o){ return __createO(o) } | |||||
| __cmdprototype.create = create; | |||||
| return __cmdprototype; | |||||
| })() | |||||
| elxrcmd.create(cmds['users']) | |||||
| var interpretrun = function(){ | |||||
| 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].interpret() : (function(){ | |||||
| processedArgs._[1] ? clioverrides.instanceName = processedArgs._[1]: null; | |||||
| // 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() | |||||
| console.dir(clioverrides) | |||||
| var util = require('util'); | var util = require('util'); | ||||
| var cliname = 'elxr'; | var cliname = 'elxr'; | ||||
| var ver = '1.1'; | var ver = '1.1'; | ||||
| return any(configPriority.map(cfg => { return function() { return instanceData[cfg](slections) } } ), true, true) | 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 | |||||
| var __acquireConfig = function (selected, owner, clusternodename, configrepo, errHandler) { | var __acquireConfig = function (selected, owner, clusternodename, configrepo, errHandler) { | ||||
| configrepo = configrepo || selected.instanceName + '-config-' + selected.node_env; | configrepo = configrepo || selected.instanceName + '-config-' + selected.node_env; |