Browse Source

Merge branch 'master' of //172.16.0.27/repos/elxr

pull/1/head
Pradeep Bhaskaran 4 years ago
parent
commit
cd69b19355
2 changed files with 100 additions and 4 deletions
  1. 98
    3
      index.js
  2. 2
    1
      package.json

+ 98
- 3
index.js View File

const cliargs = require('../elxr/cliargs'); // Use minimist... const cliargs = require('../elxr/cliargs'); // Use minimist...
const processedArgs = cliargs(process.argv.slice(2)); const processedArgs = cliargs(process.argv.slice(2));
console.dir(processedArgs) console.dir(processedArgs)
var globSync = require('glob').sync;


var path = require('path')
var path = require('path');
const { isMaster } = require('cluster');
// Serialize a set of functions that will execute to return a promises one after the other. // Serialize a set of functions that will execute to return a promises one after the other.
// Will stop when any one fails. // Will stop when any one fails.
function any(iterable, continueOnFailure) { function any(iterable, continueOnFailure) {
kill(serverPid) kill(serverPid)
} }
, 'use' : ()=>{ , 'use' : ()=>{
// use a certain named instance.
// Eg :
// 1) elxr use elixir
// 2) elxr use cihsr
// If environment is not specified defaults to development.
// 1) NODE=test elxr use elixir


var runconfig = { NODE_ENV : process.env.NODE_ENV } var runconfig = { NODE_ENV : process.env.NODE_ENV }
try { runconfig = Object.assign(runconfig, require('../run.js')) } catch(e) { } try { runconfig = Object.assign(runconfig, require('../run.js')) } catch(e) { }
return p; return p;
} }
else return Promise.resolve(true); else return Promise.resolve(true);
}
},
]; ];
runconfig.NODE_ENV = process.env.NODE_ENV = process.env.NODE_ENV || runconfig.NODE_ENV || 'development'; runconfig.NODE_ENV = process.env.NODE_ENV = process.env.NODE_ENV || runconfig.NODE_ENV || 'development';
if(processedArgs._[1] && runconfig.use !== processedArgs._[1]) runconfig.use = processedArgs._[1]; if(processedArgs._[1] && runconfig.use !== processedArgs._[1]) runconfig.use = processedArgs._[1];
// console.log(process.env.cwd) // console.log(process.env.cwd)
fs.writeFileSync('./run.js', 'module.exports = ' + JSON.stringify(runconfig)) fs.writeFileSync('./run.js', 'module.exports = ' + JSON.stringify(runconfig))
var checkoutMap = {
'development' : 'master',
}

// cant use git checkout -b it fails with branch already exists.
var performCheckout = (repo)=>{
return nodeShellExec('git', ['checkout', checkoutMap[runconfig.NODE_ENV] || runconfig.NODE_ENV], {
inherit : true, shell: true,
cwd : repo
}).catch((e)=>{ console.error(e) })
}

var mergeSources = {
'development' : null,
'test' : 'master',
'production' : 'test'
}
var exludeMergeRepos = {
'elixir-config-development' : true, 'elixir-config-test': true, 'elixir-config-production' : true
}

var mergeSource = mergeSources[checkoutMap[runconfig.NODE_ENV] || runconfig.NODE_ENV]
var performMerge = (repo)=>{
if(exludeMergeRepos[repo]) return Promise.resolve({ 'skipped' : true })
return nodeShellExec('git', ['merge', mergeSource], {
inherit : true, shell: true,
cwd : repo
}).catch((e)=>{ console.error(e) })
}
if(runconfig.NODE_ENV === 'development') performMerge = ()=>{}

any(tasks).then(()=>{ any(tasks).then(()=>{
if(!processedArgs.runas) return op['runas']() if(!processedArgs.runas) return op['runas']()


] ]
) )
} }
return any(tasks).then(()=>{

return any(tasks.concat([
any(gitRepos.map((repo)=>performCheckout(repo))),
any(elevatedRunasRepos.map((repo)=>performCheckout(repo))),
any(gitRepos.map((repo)=>performMerge(repo))),
any(elevatedRunasRepos.map((repo)=>performMerge(repo))),
, () => {
// Move test config from dev.
if(process.env.NODE_ENV === 'test'){
var devcfgreponame = runconfig.use + '-config' + '-development';
var testcfgreponame = runconfig.use + '-config' + '-test';
var testcfgdir = path.dirname(__dirname) + '/' + testcfgreponame + '/'
var devcfgdir = path.dirname(__dirname) + '/' + devcfgreponame + '/' //eg (elxr/../elixir-config.development)
var promises = [];
promises.push(
nodeShellExec('git', ['checkout', 'test'], {
inherit : true, shell: true,
cwd : testcfgdir
// , env: process.env
, runas : processedArgs.runas
, title : `git checkout ${testcfgreponame}`
}).catch((e)=>{ console.error(e) })
)
promises.push(
nodeShellExec('git', ['checkout', 'master'], {
inherit : true, shell: true,
cwd : devcfgdir
// , env: process.env
, runas : processedArgs.runas
, title : `git checkout ${devcfgreponame}`
}).catch((e)=>{ console.error(e) })
)
Promise.all(promises).then(()=> {
globSync( '**/*.test.js', {cwd : devcfgdir}).map((filename) => {
console.log('File found : ' + devcfgdir + filename)
fs.copyFileSync(devcfgdir + filename, testcfgdir+ filename);
nodeShellExec('git', ['checkout', 'test'], {
inherit : true, shell: true,
cwd : devcfgdir
// , env: process.env
, runas : processedArgs.runas
, title : `git checkout ${devcfgreponame}`
}).catch((e)=>{ console.error(e) })
})
})
}
}
])
).then(()=>{
fs.writeFileSync('run.done', 'success') fs.writeFileSync('run.done', 'success')
}).catch(()=>{ }).catch(()=>{
fs.writeFileSync('run.done', 'error') fs.writeFileSync('run.done', 'error')

+ 2
- 1
package.json View File

"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"tree-kill": "^1.2.2"
"tree-kill": "^1.2.2",
"glob": "^7.1.2"
} }
} }

Loading…
Cancel
Save