|
|
@@ -1698,15 +1698,9 @@ var elxr = { |
|
|
|
// Or a single repo ( Either Elevated or normal. ) |
|
|
|
|
|
|
|
|
|
|
|
def = (def ? ( |
|
|
|
// def.requiresElevation = true, |
|
|
|
// def.repos = def.repos, |
|
|
|
// def.elevatedRepos = def.elevatedRunasRepos, |
|
|
|
def |
|
|
|
|
|
|
|
) : false) || { |
|
|
|
def = def || { |
|
|
|
repos : repomanifest.repos, |
|
|
|
elevatedRepos : repomanifest.elevated |
|
|
|
elevated : repomanifest.elevated |
|
|
|
} |
|
|
|
|
|
|
|
var elevatedpulltasks = null; |
|
|
@@ -1741,20 +1735,20 @@ var elxr = { |
|
|
|
|
|
|
|
var useGitPull = processedArgs.useGitPull || false; |
|
|
|
|
|
|
|
if(def.elevatedRepos || def.repos) { |
|
|
|
if(def.elevatedRepos) def.requiresElevation = true; |
|
|
|
if(def.elevated || def.repos) { |
|
|
|
if(def.elevated) def.requiresElevation = true; |
|
|
|
else delete def.requiresElevation; |
|
|
|
} |
|
|
|
else { |
|
|
|
if(def.requiresElevation) def.elevatedRepos = [def] |
|
|
|
if(def.requiresElevation) def.elevated = [def] |
|
|
|
else def.repos = [def] |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var regularpulltasks = function(){ return Promise.resolve(true) } |
|
|
|
if(def.elevatedRepos){ |
|
|
|
if(def.elevated){ |
|
|
|
elevatedpulltasks = function() { |
|
|
|
return any(def.elevatedRepos.map((def) => performPull(def.repo))).then(() => { |
|
|
|
return any(def.elevated.map((def) => performPull(def.repo))).then(() => { |
|
|
|
return true; |
|
|
|
}).catch((e) => { |
|
|
|
console.error(e) |
|
|
@@ -1914,6 +1908,29 @@ We will run your choice at the next prompt. |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
var mergeObjByKey = function(arrOfObjs, keyName) { |
|
|
|
|
|
|
|
var keyedDistinct = {} |
|
|
|
var distinctArrOfObjs = [] |
|
|
|
|
|
|
|
arrOfObjs.forEach( o => { |
|
|
|
if(o) (keyedDistinct[o[keyName]] || (keyedDistinct[o[keyName]] = []) ).push(o) |
|
|
|
}) |
|
|
|
Object.keys(keyedDistinct).forEach(key => { |
|
|
|
distinctArrOfObjs.push( utils.assign( ...keyedDistinct[key] ) ) // PB : TODO -- Shallow use utils.assign |
|
|
|
}) |
|
|
|
|
|
|
|
return distinctArrOfObjs; |
|
|
|
} |
|
|
|
|
|
|
|
var cacheWriteInstanceConfig = function(chessinstances){ |
|
|
|
var instanceName = chessinstances['current_run'].instanceName; |
|
|
|
var node_env = chessinstances['current_run'].node_env; |
|
|
|
chessinstances[instanceName][node_env].repos = mergeObjByKey(chessinstances[instanceName][node_env].repos, 'repo') ; |
|
|
|
chessinstances[instanceName][node_env].elevated = mergeObjByKey(chessinstances[instanceName][node_env].elevated, 'repo') ; |
|
|
|
fs.writeFileSync(instanceroot + '/chessinstances.js', 'module.exports = ' + JSON.stringify(chessinstances, null, 2) + '', { 'flag': 'w' }) |
|
|
|
} |
|
|
|
|
|
|
|
var acquireConfig = function (selected, chessinstances) { |
|
|
|
|
|
|
|
var configrepo = selected.instanceName + '-config-' + selected.node_env; |
|
|
@@ -1926,9 +1943,11 @@ var acquireConfig = function (selected, chessinstances) { |
|
|
|
chessinstances[selected.instanceName][selected.node_env] = chessinstances[selected.instanceName][selected.node_env] || {} |
|
|
|
chessinstances['current_run'] = { instanceName: selected.instanceName, node_env: selected.node_env } |
|
|
|
// Config from server always override merges into selection ecept for the current selection. |
|
|
|
// PB : TODO -- utils.assign Array merges are non-distinct... |
|
|
|
selectedinstance = utils.assign(chessinstances[selected.instanceName][selected.node_env], selected, repomanifest) |
|
|
|
// chessinstances[selectedinstance.instanceName][selectedinstance.node_env] = selectedinstance; |
|
|
|
fs.writeFileSync(instanceroot + '/chessinstances.js', 'module.exports = ' + JSON.stringify(chessinstances, null, 2) + '', { 'flag': 'w' }) |
|
|
|
cacheWriteInstanceConfig(chessinstances) |
|
|
|
selectedinstance = chessinstances[selected.instanceName][selected.node_env] |
|
|
|
// PB : TODO -- We should probably write the new server config also... |
|
|
|
selectedinstance.reposerver = selectedinstance.reposerver || selectedinstance.reposervers[0] // PB : TODO -- Attempt first one that is available and online... |
|
|
|
ENV.NODE_ENV = selectedinstance.node_env; |