|
|
@@ -8,7 +8,20 @@ Tasq.addlistener(statuslog.statuslog) |
|
|
|
var cli = require('./cliverse') |
|
|
|
var nodeShellExec = cli.nodeShellExec; |
|
|
|
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 BUILD_VERSION = '[VI]Version: {version} - built on {date}[/VI]'; |
|
|
@@ -82,71 +95,8 @@ console.dir(processedArgs) |
|
|
|
|
|
|
|
// |
|
|
|
|
|
|
|
// 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 => { }) |
|
|
|
|
|
|
@@ -1921,9 +1871,8 @@ var op = { |
|
|
|
|
|
|
|
g[processedArgs._[1]](); |
|
|
|
} |
|
|
|
|
|
|
|
, 'create' : () => { |
|
|
|
return createInstance(selectedinstance) } |
|
|
|
|
|
|
|
, 'create' : () => { return createInstance(selectedinstance) } |
|
|
|
|
|
|
|
, 'httpget' : () => { |
|
|
|
// RESTAPI.get({ |
|
|
@@ -1936,15 +1885,125 @@ var op = { |
|
|
|
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 cliname = 'elxr'; |
|
|
|
var ver = '1.1'; |
|
|
@@ -2330,6 +2389,13 @@ 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 |
|
|
|
var __acquireConfig = function (selected, owner, clusternodename, configrepo, errHandler) { |
|
|
|
|
|
|
|
configrepo = configrepo || selected.instanceName + '-config-' + selected.node_env; |