| }) | }) | ||||
| } | } | ||||
| var enqueueCheckout = function(def){ enqueue(elevatedqueue, performCheckout, def) } | |||||
| var enqueueMerge = function(def){ enqueue(elevatedqueue, performMerge, def) } | |||||
| // var enqueueCheckout = function(def){ enqueue(elevatedqueue, performCheckout, def) } | |||||
| // var enqueueMerge = function(def){ enqueue(elevatedqueue, performMerge, def) } | |||||
| var elevatedqueue = []; | var elevatedqueue = []; | ||||
| var enqueueOnce = (queue, task, def) => { | var enqueueOnce = (queue, task, def) => { | ||||
| } | } | ||||
| if (runconfig.NODE_ENV === 'development') performMerge = () => { return Promise.resolve(true) } | if (runconfig.NODE_ENV === 'development') performMerge = () => { return Promise.resolve(true) } | ||||
| var performRepoOperation = function(def) { | |||||
| elevatedRunasRepos.map((repo) => enqueueCheckout({ repo, branch: def.branch, requiresElevation : true })) | |||||
| return any(gitRepos.map((repo) => performCheckout({ repo, branch: def.branch}))) | |||||
| } | |||||
| // var performRepoOperation = function(def) { | |||||
| // elevatedRunasRepos.map((repo) => enqueueCheckout({ repo, branch: def.branch, requiresElevation : true })) | |||||
| // return any(gitRepos.map((repo) => performCheckout({ repo, branch: def.branch}))) | |||||
| // } | |||||
| return any(tasks).then(() => { | return any(tasks).then(() => { | ||||
| var pr = Promise.resolve(true) | var pr = Promise.resolve(true) | ||||
| //target is the env is we specify in elxr use command. Default is dev | //target is the env is we specify in elxr use command. Default is dev | ||||
| //Switch to target branch | //Switch to target branch | ||||
| return any(gitRepos.map((repo) => performCheckout({ repo, branch}))) | |||||
| return any(gitRepos.map((repodef) => performCheckout({ repo : repodef.repo, branch}))) | |||||
| // pull or clone target branch | // pull or clone target branch | ||||
| .then(() => any(gitRepos.map((repo) => performPullAll({repo}))) ) | |||||
| .then(() => any(gitRepos.map((repo) => performPullAll(repo))) ) | |||||
| // switch to source branch | // switch to source branch | ||||
| .then( () => { | .then( () => { | ||||
| if(mergesource) return any(gitRepos.map((repo) => performCheckout({ repo, branch: mergesource}))) | |||||
| if(mergesource) return any(gitRepos.map((repodef) => performCheckout({ repo : repodef.repo, branch: mergesource}))) | |||||
| else return Promise.resolve(true) // Dont do anything if there is no source to merge from. | else return Promise.resolve(true) // Dont do anything if there is no source to merge from. | ||||
| }) | }) | ||||
| //Pull on merge source branch | //Pull on merge source branch | ||||
| .then( () => { | .then( () => { | ||||
| if(!mergesource) return Promise.resolve(true) | if(!mergesource) return Promise.resolve(true) | ||||
| return any(gitRepos.map((repo) => performPullAll({repo}))) | |||||
| return any(gitRepos.map((repo) => performPullAll(repo))) | |||||
| }) | }) | ||||
| //Switch to target branch | //Switch to target branch | ||||
| .then( () => { | .then( () => { | ||||
| if(!mergesource) return Promise.resolve(true) | if(!mergesource) return Promise.resolve(true) | ||||
| return any(elevatedRunasRepos.map((repo) => performCheckout({ repo, branch}))) | |||||
| return any(elevatedRunasRepos.map((repodef) => performCheckout({ repo : repodef.repo, branch}))) | |||||
| }) | }) | ||||
| .then( //Merge source branch to target branch | .then( //Merge source branch to target branch | ||||
| () => { | () => { | ||||
| if(!mergesource) return Promise.resolve(true) | if(!mergesource) return Promise.resolve(true) | ||||
| return any(gitRepos.map((repo) => performMerge({ repo }))).catch(err => { console.error('error in performMerge ' + err) }) | |||||
| return any(gitRepos.map((repo) => performMerge( repo ))).catch(err => { console.error('error in performMerge ' + err) }) | |||||
| }) | }) | ||||
| }) | }) | ||||
| } | } | ||||
| } | } | ||||
| return any(tasks).then(()=>{ | return any(tasks).then(()=>{ | ||||
| return any(elevatedRunasRepos.map((repo) => performCheckout({ repo, branch, requiresElevation : true}))) | |||||
| return any(elevatedRunasRepos.map((repodef) => performCheckout({ repo : repodef.repo, branch, requiresElevation : true}))) | |||||
| // pull or clone target branch | // pull or clone target branch | ||||
| .then( () => any(elevatedRunasRepos.map((repo) => performPullAll({repo}))) ) | |||||
| .then( () => any(elevatedRunasRepos.map((repo) => performPullAll(repo))) ) | |||||
| // switch to source branch | // switch to source branch | ||||
| .then( () => { | .then( () => { | ||||
| if(mergesource) return any(elevatedRunasRepos.map((repo) => performCheckout({ repo, branch: mergesource, requiresElevation : true}))) | |||||
| if(mergesource) return any(elevatedRunasRepos.map((repodef) => performCheckout({ repo : repodef.repo, branch: mergesource, requiresElevation : true}))) | |||||
| else return Promise.resolve(true) // Dont do anything if there is no source to merge from. | else return Promise.resolve(true) // Dont do anything if there is no source to merge from. | ||||
| }) | }) | ||||
| //Pull on merge source branch | //Pull on merge source branch | ||||
| .then( () => { | .then( () => { | ||||
| if(!mergesource) return Promise.resolve(true) | if(!mergesource) return Promise.resolve(true) | ||||
| return any(elevatedRunasRepos.map((repo) => performPullAll({repo, requiresElevation : true }))) | |||||
| return any(elevatedRunasRepos.map((repodef) => performPullAll({repo : repodef.repo, requiresElevation : true }))) | |||||
| }) | }) | ||||
| //Switch to target branch | //Switch to target branch | ||||
| .then( () => { | .then( () => { | ||||
| if(!mergesource) return Promise.resolve(true) | if(!mergesource) return Promise.resolve(true) | ||||
| return any(elevatedRunasRepos.map((repo) => performCheckout({ repo, branch, requiresElevation : true}))) | |||||
| return any(elevatedRunasRepos.map((repodef) => performCheckout({ repo : repodef.repo, branch, requiresElevation : true}))) | |||||
| }) | }) | ||||
| .then( //Merge source branch to target branch | .then( //Merge source branch to target branch | ||||
| () => { | () => { | ||||
| if(!mergesource) return Promise.resolve(true) | if(!mergesource) return Promise.resolve(true) | ||||
| return any(elevatedRunasRepos.map((repo) => performMerge({ repo, requiresElevation : true }))).catch(err => { console.error('error in performMerge ' + err) }) | |||||
| return any(elevatedRunasRepos.map((repodef) => performMerge({ repo : repodef.repo, requiresElevation : true }))).catch(err => { console.error('error in performMerge ' + err) }) | |||||
| }) | }) | ||||
| .then(() => { | .then(() => { | ||||
| fs.writeFileSync('run.done', 'success') | fs.writeFileSync('run.done', 'success') |