|
|
|
|
|
|
|
|
var op = { |
|
|
var op = { |
|
|
'h' : ()=>{ console.log(cli + ' ' + ver + ' ' + help); return '-h' } |
|
|
'h' : ()=>{ console.log(cli + ' ' + ver + ' ' + help); return '-h' } |
|
|
, 'undefined' : ()=>{ return op.h(); } |
|
|
, 'undefined' : ()=>{ return op.h(); } |
|
|
|
|
|
, 'reset' : ()=>{ |
|
|
|
|
|
|
|
|
|
|
|
// Reset NPM packages semver so major versions can be updated. |
|
|
|
|
|
|
|
|
|
|
|
const fs = require('fs') |
|
|
|
|
|
const wipeDependencies = (package) => { |
|
|
|
|
|
const file = fs.readFileSync(package + '/package.json') |
|
|
|
|
|
const content = JSON.parse(file) |
|
|
|
|
|
for (var devDep in content.devDependencies) { |
|
|
|
|
|
if (content.devDependencies[devDep].match(/\W+\d+.\d+.\d+-?((alpha|beta|rc)?.\d+)?/g)) { |
|
|
|
|
|
content.devDependencies[devDep] = '*'; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
for (var dep in content.dependencies) { |
|
|
|
|
|
if (content.dependencies[dep].match(/\W+\d+.\d+.\d+-?((alpha|beta|rc)?.\d+)?/g)) { |
|
|
|
|
|
content.dependencies[dep] = '*'; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
fs.writeFileSync(package + '/package.json', JSON.stringify(content)) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var repos = ['client']; |
|
|
|
|
|
// repos = gitRepos; |
|
|
|
|
|
repos.forEach(wipeDependencies) |
|
|
|
|
|
// if (require.main === module) { |
|
|
|
|
|
// } else { |
|
|
|
|
|
// module.exports = wipeDependencies |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
, 'upgrade' : ()=>{ |
|
|
, 'upgrade' : ()=>{ |
|
|
console.log('upgrade.......') |
|
|
console.log('upgrade.......') |
|
|
var tasks = [ |
|
|
var tasks = [ |
|
|
|
|
|
|
|
|
// git push origin master |
|
|
// git push origin master |
|
|
|
|
|
|
|
|
var repo = processedArgs._[1]; |
|
|
var repo = processedArgs._[1]; |
|
|
var defaultRepoServer = '//172.16.0.27/repos' |
|
|
|
|
|
|
|
|
var defaultRepoServer = reposervers[0] |
|
|
|
|
|
var reposervers = [ |
|
|
|
|
|
'http://git.bbh' |
|
|
|
|
|
, '//172.16.0.27/repos' |
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
var sequentialTaskShellCommands = []; |
|
|
var sequentialTaskShellCommands = []; |
|
|
if(!existsSync(`Z:/${repo}.git`)){ |
|
|
if(!existsSync(`Z:/${repo}.git`)){ |
|
|
|
|
|
|
|
|
, inherit : true, shell: true |
|
|
, inherit : true, shell: true |
|
|
, env: process.env |
|
|
, env: process.env |
|
|
}] |
|
|
}] |
|
|
|
|
|
// PB : TODO -- Do this conditionally only... |
|
|
, ['git', ['remote', 'rename', 'origin', 'githubclone'], { cwd : `${repo}`}, (err)=>{ |
|
|
, ['git', ['remote', 'rename', 'origin', 'githubclone'], { cwd : `${repo}`}, (err)=>{ |
|
|
console.log('Ignoring origin rename error : ' + err); return true; //return true to continue. |
|
|
console.log('Ignoring origin rename error : ' + err); return true; //return true to continue. |
|
|
} ] // PB ; Todo -- new repositories created locally will not have origin. Handle this failure. |
|
|
} ] // PB ; Todo -- new repositories created locally will not have origin. Handle this failure. |
|
|
, ['git', ['remote', 'add', 'origin', `${defaultRepoServer}/${repo}.git`], { cwd : `${repo}`}] |
|
|
, ['git', ['remote', 'add', 'origin', `${defaultRepoServer}/${repo}.git`], { cwd : `${repo}`}] |
|
|
|
|
|
// PB : TODO -- If threre is a gitbubclone origin |
|
|
|
|
|
// Set the master to pull from the local repo. |
|
|
] |
|
|
] |
|
|
if(!existsSync(`Z:`)){ |
|
|
if(!existsSync(`Z:`)){ |
|
|
sequentialTaskShellCommands.splice(0,0, ['net', ['use', 'Z:', defaultRepoServer.replace(/\//gm,'\\')], { |
|
|
sequentialTaskShellCommands.splice(0,0, ['net', ['use', 'Z:', defaultRepoServer.replace(/\//gm,'\\')], { |
|
|
|
|
|
|
|
|
any(tasks); |
|
|
any(tasks); |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
, 'is-git-repo' : (dir)=>{ |
|
|
|
|
|
return nodeShellExec('git', ['-C', dir.name, 'rev-parse'], { stdio : 'ignore'}) |
|
|
|
|
|
} |
|
|
|
|
|
, 'init-gitea' : (user) => { |
|
|
|
|
|
user = user || processedArgs._[1] |
|
|
|
|
|
if(!user) throw 'User name required' |
|
|
|
|
|
var serial_perform_init_gitea = (repo)=>{ |
|
|
|
|
|
var options = { cwd : repo } |
|
|
|
|
|
// console.log(repo) |
|
|
|
|
|
return [ |
|
|
|
|
|
['git', ['remote', 'add', 'chess', 'http://git.bbh/chess/elxr.git'], { cwd : repo }] |
|
|
|
|
|
, ['git', ['remote', 'set-url', '--push', 'chess', 'no-pushing'], { cwd : repo }] |
|
|
|
|
|
, ['git', ['remote', 'set-url', 'origin', `http://git.bbh/${user}/${repo}.git`], { cwd : repo }] |
|
|
|
|
|
]} |
|
|
|
|
|
var x = (args)=>{ |
|
|
|
|
|
return ()=>{ |
|
|
|
|
|
// console.log(args) |
|
|
|
|
|
return nodeShellExec.apply(null, args) |
|
|
|
|
|
} |
|
|
|
|
|
// return Promise.resolve(true) |
|
|
|
|
|
} |
|
|
|
|
|
var perform_init_gitea = (dir)=>{ |
|
|
|
|
|
op['is-git-repo'](dir).then((code)=>{ |
|
|
|
|
|
// console.log(code) |
|
|
|
|
|
if(code) { |
|
|
|
|
|
nodeShellExec('git',['remote', 'get-url', 'chess'], { cwd : dir.name, stdio : 'ignore' }).then(()=>{ |
|
|
|
|
|
console.log('skipped : ' + dir.name + ', reason : Already has remote chess ') |
|
|
|
|
|
}) |
|
|
|
|
|
.catch((e)=>{ |
|
|
|
|
|
any( serial_perform_init_gitea(dir.name).map(x) ) |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
// else console.log('Skipped : Not a Git Repo : ' + dir.name) |
|
|
|
|
|
}).catch((e)=>{ |
|
|
|
|
|
// console.log('Failed : ' + dir.name) |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const { readdir } = require("fs").promises |
|
|
|
|
|
|
|
|
|
|
|
const dirs = async (perform, path) => { |
|
|
|
|
|
for (const dir of await readdir(path || process.cwd(), { withFileTypes: true })) { |
|
|
|
|
|
if (dir.isDirectory()) perform(dir) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
dirs(perform_init_gitea) |
|
|
|
|
|
} |
|
|
, 'pull' : (label) => { |
|
|
, 'pull' : (label) => { |
|
|
// Usage : |
|
|
// Usage : |
|
|
// elxr pull -- Defaults to run config |
|
|
// elxr pull -- Defaults to run config |
|
|
|
|
|
|
|
|
// env: env |
|
|
// env: env |
|
|
// }) |
|
|
// }) |
|
|
|
|
|
|
|
|
|
|
|
var useGitPull = processedArgs.useGitPull || false; |
|
|
|
|
|
var getPullCmd = (repo)=>{ |
|
|
|
|
|
|
|
|
|
|
|
var pullCmd = ["C:\\Program Files\\Git\\bin\\sh.exe", ['-c', 'branch=`git rev-parse --abbrev-ref HEAD`;for i in `git remote`; do git pull $i $branch; done;'], { cwd : repo }] |
|
|
|
|
|
// var pullCmd = ['pullall', [], { cwd : repo }] |
|
|
|
|
|
if(useGitPull) pullCmd = ['git', ['pull'], { |
|
|
|
|
|
inherit : true, shell: true, |
|
|
|
|
|
cwd : repo |
|
|
|
|
|
// , env: process.env |
|
|
|
|
|
, runas : processedArgs.runas |
|
|
|
|
|
, title : `git pull ${repo}` |
|
|
|
|
|
}] |
|
|
|
|
|
return pullCmd |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
var performPull = (repo) => { |
|
|
var performPull = (repo) => { |
|
|
if(existsSync(repo)) { |
|
|
if(existsSync(repo)) { |
|
|
console.log('pulling ' + repo) |
|
|
console.log('pulling ' + repo) |
|
|
return nodeShellExec('git', ['pull'], { |
|
|
|
|
|
inherit : true, shell: true, |
|
|
|
|
|
cwd : repo |
|
|
|
|
|
// , env: process.env |
|
|
|
|
|
, runas : processedArgs.runas |
|
|
|
|
|
, title : `git pull ${repo}` |
|
|
|
|
|
}).catch((e)=>{ console.error(e) }) |
|
|
|
|
|
|
|
|
return nodeShellExec.apply(null, getPullCmd(repo)).catch((e)=>{ console.error(e) }) |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
console.log('cloning ' + repo) |
|
|
console.log('cloning ' + repo) |
|
|
return nodeShellExec('git', ['clone', '-c', 'core.symlinks=true', '//172.16.0.27/repos/' + repo + '.git'], |
|
|
|
|
|
|
|
|
return nodeShellExec('git', ['clone', '-c', 'core.symlinks=true', defaultRepoServer + '/' + repo + '.git'], |
|
|
{ |
|
|
{ |
|
|
inherit : true, shell: true, |
|
|
inherit : true, shell: true, |
|
|
env: process.env |
|
|
env: process.env |
|
|
|
|
|
|
|
|
env: process.env |
|
|
env: process.env |
|
|
, cwd : repo |
|
|
, cwd : repo |
|
|
, runas : processedArgs.runas |
|
|
, runas : processedArgs.runas |
|
|
, title : `git core.symlinks --replace-all true for ${'//172.16.0.27/repos/' + repo + '.git'}` |
|
|
|
|
|
|
|
|
, title : `git core.symlinks --replace-all true for ${defaultRepoServer + '/' + repo + '.git'}` |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.then( () => { |
|
|
.then( () => { |
|
|
// Move test config from dev. |
|
|
// Move test config from dev. |
|
|
// if(process.env.NODE_ENV === 'test'){ |
|
|
// if(process.env.NODE_ENV === 'test'){ |
|
|
// var devcfgreponame = runconfig.use + '-config' + '-development'; |
|
|
|
|
|
// var testcfgreponame = runconfig.use + '-config' + '-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 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) }) |
|
|
|
|
|
// ) |
|
|
|
|
|
|
|
|
|
|
|
// return Promise.all(promises).then(()=> { |
|
|
|
|
|
// globSync( '**/*.test.js', {cwd : devcfgdir}).map((filename) => { |
|
|
|
|
|
|
|
|
|
|
|
// console.log('File found : ' + devcfgdir + filename) |
|
|
|
|
|
// fs.copyFileSync(devcfgdir + filename, testcfgdir+ filename); |
|
|
|
|
|
|
|
|
|
|
|
// return 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) }) |
|
|
|
|
|
|
|
|
|
|
|
// }) |
|
|
|
|
|
// }) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// return any([ |
|
|
|
|
|
// ()=>{ |
|
|
|
|
|
// return nodeShellExec('git', ['checkout', 'test'], { |
|
|
|
|
|
// inherit : true, shell: true, |
|
|
|
|
|
// cwd : testcfgdir |
|
|
|
|
|
// // , env: process.env |
|
|
|
|
|
// , runas : processedArgs.runas |
|
|
|
|
|
// , title : `git checkout test for ${testcfgreponame}` |
|
|
|
|
|
// }).catch((e)=>{ console.error(e) }) |
|
|
|
|
|
// } |
|
|
|
|
|
// , ()=> { |
|
|
|
|
|
// return nodeShellExec('git', ['checkout', 'master'], { |
|
|
|
|
|
// inherit : true, shell: true, |
|
|
|
|
|
// cwd : devcfgdir |
|
|
|
|
|
// // , env: process.env |
|
|
|
|
|
// , runas : processedArgs.runas |
|
|
|
|
|
// , title : `git checkout master for ${devcfgreponame}` |
|
|
|
|
|
// }).catch((e)=>{ console.error(e) }) |
|
|
|
|
|
// } |
|
|
|
|
|
// , ()=> { |
|
|
|
|
|
// globSync( '**/*.test.js', {cwd : devcfgdir}).map((filename) => { |
|
|
|
|
|
// console.log('File found : ' + devcfgdir + filename) |
|
|
|
|
|
// fs.copyFileSync(devcfgdir + filename, testcfgdir+ filename); |
|
|
|
|
|
// }) |
|
|
|
|
|
// return nodeShellExec('git', ['checkout', 'test'], { |
|
|
|
|
|
// inherit : true, shell: true, |
|
|
|
|
|
// cwd : devcfgdir |
|
|
|
|
|
// // , env: process.env |
|
|
|
|
|
// , runas : processedArgs.runas |
|
|
|
|
|
// , title : `git checkout test for ${devcfgreponame}` |
|
|
|
|
|
// }).catch((e)=>{ console.error(e) }) |
|
|
|
|
|
// } |
|
|
|
|
|
// ]) |
|
|
// } |
|
|
// } |
|
|
// else{ |
|
|
|
|
|
|
|
|
// else { |
|
|
return Promise.resolve(true) |
|
|
return Promise.resolve(true) |
|
|
// } |
|
|
// } |
|
|
}).then(()=>{ |
|
|
|
|
|
|
|
|
}) |
|
|
|
|
|
.then(()=>{ |
|
|
fs.writeFileSync('run.done', 'success') |
|
|
fs.writeFileSync('run.done', 'success') |
|
|
}).catch(()=>{ |
|
|
}).catch(()=>{ |
|
|
fs.writeFileSync('run.done', 'error') |
|
|
fs.writeFileSync('run.done', 'error') |