|
|
|
|
|
|
|
|
|
|
|
|
|
|
var ENV = Object.assign({}, process.env); // Shallow clone it. |
|
|
var ENV = Object.assign({}, process.env); // Shallow clone it. |
|
|
|
|
|
|
|
|
|
|
|
const { readdir } = require("fs").promises |
|
|
|
|
|
|
|
|
|
|
|
// Directory shallow walk and do perform on each dir. |
|
|
|
|
|
const dirs = async (perform, path) => { |
|
|
|
|
|
for (const dir of await readdir(path || process.cwd(), { withFileTypes: true })) { |
|
|
|
|
|
if (dir.isDirectory()) perform(dir) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
var getShellTask = (command, args, options) => { |
|
|
var getShellTask = (command, args, options) => { |
|
|
|
|
|
options = options || {} |
|
|
return () => { |
|
|
return () => { |
|
|
var p = nodeShellExec.apply(null, [command, args, Object.assign({ |
|
|
var p = nodeShellExec.apply(null, [command, args, Object.assign({ |
|
|
inherit: true, shell: true, env: ENV, title: `${command} ${args}` |
|
|
inherit: true, shell: true, env: ENV, title: `${command} ${args}` |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
var getPullCmd = (repo, branch) => { |
|
|
var getPullCmd = (repo, branch) => { |
|
|
|
|
|
// console.log(useGitPull)var getPullCmd = (repo, branch) => { |
|
|
// console.log(useGitPull) |
|
|
// console.log(useGitPull) |
|
|
|
|
|
|
|
|
if(branch) { |
|
|
if(branch) { |
|
|
var pullCmd = [ gitInstallDir |
|
|
|
|
|
|
|
|
var pullCmd = [ gitbash |
|
|
, ['-c', 'for i in `git remote`; do git pull $i ' + branch + '; done;'] |
|
|
, ['-c', 'for i in `git remote`; do git pull $i ' + branch + '; done;'] |
|
|
, { cwd : repo, title : 'pull all origins for ' + repo }] |
|
|
|
|
|
|
|
|
, { cwd: instanceroot + '/' + repo, title : 'pull all origins for ' + repo }] |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
var pullCmd = [gitInstallDir |
|
|
|
|
|
|
|
|
var pullCmd = [gitbash |
|
|
, ['-c', 'branch=`git rev-parse --abbrev-ref HEAD`;for i in `git remote`; do git pull $i $branch; done;'] |
|
|
, ['-c', 'branch=`git rev-parse --abbrev-ref HEAD`;for i in `git remote`; do git pull $i $branch; done;'] |
|
|
, { cwd: repo, title: 'pull all origins for ' + repo }] |
|
|
|
|
|
|
|
|
, { cwd: instanceroot + '/' + repo, title: 'pull all origins for ' + repo }] |
|
|
} |
|
|
} |
|
|
// var pullCmd = ['pullall', [], { cwd : repo }] |
|
|
// var pullCmd = ['pullall', [], { cwd : repo }] |
|
|
if (useGitPull) pullCmd = ['git', ['pull'], { |
|
|
if (useGitPull) pullCmd = ['git', ['pull'], { |
|
|
|
|
|
|
|
|
return pullCmd |
|
|
return pullCmd |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// var getPullCmd = (repo, branch) => { |
|
|
|
|
|
// var pullCmd = [gitbash |
|
|
|
|
|
// , ['-c', 'branch=`git rev-parse --abbrev-ref HEAD`;for i in `git remote`; do git pull $i $branch; done;'] |
|
|
|
|
|
// , { cwd: instanceroot + '/' + repo, title: 'pull all origins for ' + repo }] |
|
|
|
|
|
// // var pullCmd = ['pullall', [], { cwd : repo }] |
|
|
|
|
|
// if (useGitPull) pullCmd = ['git', ['pull'], { |
|
|
|
|
|
// inherit: true, shell: true, |
|
|
|
|
|
// cwd: instanceroot + '/' + repo |
|
|
|
|
|
// // , env: process.env |
|
|
|
|
|
// , runas: processedArgs.runas |
|
|
|
|
|
// , title: `git pull ${repo}` |
|
|
|
|
|
// }] |
|
|
|
|
|
// return pullCmd |
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
var performPull = (repo, branch) => { |
|
|
var performPull = (repo, branch) => { |
|
|
if (existsSync(instanceroot + '/' + repo)) { |
|
|
if (existsSync(instanceroot + '/' + repo)) { |
|
|
console.log('pulling ' + instanceroot + '/' + repo + 'branch ' + branch) |
|
|
|
|
|
|
|
|
var branchprint = branch ? ' branch :' + branch : ''; |
|
|
|
|
|
console.log('pulling ' + instanceroot + '/' + repo + branchprint ) |
|
|
return nodeShellExec.apply(null, getPullCmd(repo, branch)).then(() => { |
|
|
return nodeShellExec.apply(null, getPullCmd(repo, branch)).then(() => { |
|
|
if (__isElevated) { |
|
|
|
|
|
|
|
|
if (__isElevated) { |
|
|
fs.writeFileSync('run.log', ', ' + JSON.stringify({ repo, success: true }), { 'flag': 'a+' }) |
|
|
fs.writeFileSync('run.log', ', ' + JSON.stringify({ repo, success: true }), { 'flag': 'a+' }) |
|
|
} |
|
|
} |
|
|
else statuslog.statuslog(null, repo) |
|
|
else statuslog.statuslog(null, repo) |
|
|
|
|
|
|
|
|
return nodeShellExec('git', ['clone', '-c', 'core.symlinks=true', defaultRepoServer + `/${defaultRepoOwner}/` + repo + '.git'], |
|
|
return nodeShellExec('git', ['clone', '-c', 'core.symlinks=true', defaultRepoServer + `/${defaultRepoOwner}/` + repo + '.git'], |
|
|
{ |
|
|
{ |
|
|
inherit: true, shell: true, |
|
|
inherit: true, shell: true, |
|
|
env: process.env |
|
|
|
|
|
|
|
|
env: process.env |
|
|
|
|
|
, cwd : instanceroot |
|
|
, runas: processedArgs.runas |
|
|
, runas: processedArgs.runas |
|
|
}).catch((e) => { |
|
|
}).catch((e) => { |
|
|
throw e; |
|
|
throw e; |
|
|
|
|
|
|
|
|
{ |
|
|
{ |
|
|
inherit: true, shell: true, |
|
|
inherit: true, shell: true, |
|
|
env: process.env |
|
|
env: process.env |
|
|
, cwd: repo |
|
|
|
|
|
|
|
|
, cwd: instanceroot + '/' + repo |
|
|
, runas: processedArgs.runas |
|
|
, runas: processedArgs.runas |
|
|
, title: `git core.symlinks --replace-all true for ${defaultRepoServer + `/${defaultRepoOwner}/` + repo + '.git'}` |
|
|
, title: `git core.symlinks --replace-all true for ${defaultRepoServer + `/${defaultRepoOwner}/` + repo + '.git'}` |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// SAM : TODO Use nodeshellexec where to detect git installation dir |
|
|
// SAM : TODO Use nodeshellexec where to detect git installation dir |
|
|
var gitInstallDir = "C:\\Program Files\\Git\\bin\\sh.exe" |
|
|
|
|
|
// var gitInstallDir = "G:\\Installed\\Git\\bin\\sh.exe" |
|
|
|
|
|
|
|
|
var gitbash = "C:\\Program Files\\Git\\bin\\sh.exe" |
|
|
|
|
|
// var gitbash = "G:\\Installed\\Git\\bin\\sh.exe" |
|
|
// Relevant git repos |
|
|
// Relevant git repos |
|
|
// var repomanifest = require('../'+repomanifest.instanceName+'-config-'+ nodeenv +'/repo-manifest')() |
|
|
// var repomanifest = require('../'+repomanifest.instanceName+'-config-'+ nodeenv +'/repo-manifest')() |
|
|
var exludeMergeRepos = []; |
|
|
var exludeMergeRepos = []; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// elxr cli operations |
|
|
// elxr cli operations |
|
|
var op = { |
|
|
var op = { |
|
|
'h': () => { console.log(elxr.info()); return '-h' } |
|
|
|
|
|
|
|
|
'h': () => { console.log(elxr.help()); return '-h' } |
|
|
|
|
|
, 'clean' : () => { |
|
|
|
|
|
// delete all node_module folders and links. |
|
|
|
|
|
var tasklist = []; |
|
|
|
|
|
dirs( (repodir)=> tasklist.push(getShellTask('rm',['-rf', 'node_modules'], { cwd : instanceroot + '/' + repodir.name })()), instanceroot ) |
|
|
|
|
|
return Promise.all(tasklist) |
|
|
|
|
|
} |
|
|
, 'undefined': () => { return op.h(); } |
|
|
, 'undefined': () => { return op.h(); } |
|
|
, 'reset': () => { |
|
|
, 'reset': () => { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
, env: process.env |
|
|
, env: process.env |
|
|
}] |
|
|
}] |
|
|
// PB : TODO -- Do this conditionally only... |
|
|
// PB : TODO -- Do this conditionally only... |
|
|
, ['git', ['remote', 'rename', 'origin', 'githubclone'], { cwd: `${repo}` }, (err) => { |
|
|
|
|
|
|
|
|
, ['git', ['remote', 'rename', 'origin', 'githubclone'], { cwd: `${instanceroot + '/' + 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: `${instanceroot + '/' + repo}` }] |
|
|
// PB : TODO -- If threre is a gitbubclone origin |
|
|
// PB : TODO -- If threre is a gitbubclone origin |
|
|
// Set the master to pull from the local repo. |
|
|
// Set the master to pull from the local repo. |
|
|
] |
|
|
] |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
sequentialTaskShellCommands.push(['git', ['push', 'origin', 'master'], { cwd: `${repo}` }]) |
|
|
|
|
|
|
|
|
sequentialTaskShellCommands.push(['git', ['push', 'origin', 'master'], { cwd: `${instanceroot + '/' + repo}` }]) |
|
|
// console.dir(sequentialTaskShellCommands); |
|
|
// console.dir(sequentialTaskShellCommands); |
|
|
|
|
|
|
|
|
var tasks = []; |
|
|
var tasks = []; |
|
|
|
|
|
|
|
|
remotename = remotename || processedArgs._[1] |
|
|
remotename = remotename || processedArgs._[1] |
|
|
url = url || processedArgs._[2] |
|
|
url = url || processedArgs._[2] |
|
|
var serial_perform_git_seturl = (repo) => { |
|
|
var serial_perform_git_seturl = (repo) => { |
|
|
var options = { cwd: repo } |
|
|
|
|
|
|
|
|
var options = { cwd: instanceroot + '/' + repo } |
|
|
// console.log(repo) |
|
|
// console.log(repo) |
|
|
if (pushable) { |
|
|
if (pushable) { |
|
|
return [ |
|
|
return [ |
|
|
['git', ['remote', 'set-url', remotename, url + '/' + repo], { cwd: repo }] |
|
|
|
|
|
|
|
|
['git', ['remote', 'set-url', remotename, url + '/' + repo], { cwd: instanceroot + '/' + repo }] |
|
|
] |
|
|
] |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
|
|
|
|
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
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_git_seturl) |
|
|
dirs(perform_git_seturl) |
|
|
} |
|
|
} |
|
|
, 'add': (remotename, url, branch) => { |
|
|
, 'add': (remotename, url, branch) => { |
|
|
|
|
|
|
|
|
url = url || processedArgs._[2] |
|
|
url = url || processedArgs._[2] |
|
|
branch = branch || processedArgs._[3] |
|
|
branch = branch || processedArgs._[3] |
|
|
var serial_perform_git_add = (repo) => { |
|
|
var serial_perform_git_add = (repo) => { |
|
|
var options = { cwd: repo } |
|
|
|
|
|
|
|
|
var options = { cwd: instanceroot + '/' + repo } |
|
|
// console.log(repo) |
|
|
// console.log(repo) |
|
|
if (pushable) { |
|
|
if (pushable) { |
|
|
return [ |
|
|
return [ |
|
|
['git', ['remote', 'add', remotename, url + '/' + repo], { cwd: repo }] |
|
|
|
|
|
, ['git', ['pull', remotename, branch], { cwd: repo }] |
|
|
|
|
|
, ['git', ['branch', `--set-upstream-to=${remotename}/${branch}`, branch], { cwd: repo }] |
|
|
|
|
|
|
|
|
['git', ['remote', 'add', remotename, url + '/' + repo], { cwd: instanceroot + '/' + repo }] |
|
|
|
|
|
, ['git', ['pull', remotename, branch], { cwd: instanceroot + '/' + repo }] |
|
|
|
|
|
, ['git', ['branch', `--set-upstream-to=${remotename}/${branch}`, branch], { cwd: instanceroot + '/' + repo }] |
|
|
] |
|
|
] |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
|
|
|
|
|
|
return [ |
|
|
return [ |
|
|
['git', ['remote', 'add', remotename, url + '/' + repo], { cwd: repo }] |
|
|
|
|
|
, ['git', ['remote', `set-url`, '--push', remotename, 'no-pushing'], { cwd: repo }] |
|
|
|
|
|
, ['git', ['pull', remotename, branch], { cwd: repo }] |
|
|
|
|
|
, ['git', ['branch', `--set-upstream-to=${remotename}/${branch}`, branch], { cwd: repo }] |
|
|
|
|
|
|
|
|
['git', ['remote', 'add', remotename, url + '/' + repo], { cwd: instanceroot + '/' + repo }] |
|
|
|
|
|
, ['git', ['remote', `set-url`, '--push', remotename, 'no-pushing'], { cwd: instanceroot + '/' + repo }] |
|
|
|
|
|
, ['git', ['pull', remotename, branch], { cwd: instanceroot + '/' + repo }] |
|
|
|
|
|
, ['git', ['branch', `--set-upstream-to=${remotename}/${branch}`, branch], { cwd: instanceroot + '/' + repo }] |
|
|
] |
|
|
] |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
, 'remove': (remotename) => { |
|
|
, 'remove': (remotename) => { |
|
|
remotename = remotename || processedArgs._[1] |
|
|
remotename = remotename || processedArgs._[1] |
|
|
var serial_perform_git_remove = (repo) => { |
|
|
var serial_perform_git_remove = (repo) => { |
|
|
var options = { cwd: repo } |
|
|
|
|
|
|
|
|
var options = { cwd: instanceroot + '/' + repo } |
|
|
// console.log(repo) |
|
|
// console.log(repo) |
|
|
return [ |
|
|
return [ |
|
|
['git', ['remote', 'remove', remotename], { cwd: repo }] |
|
|
|
|
|
|
|
|
['git', ['remote', 'remove', remotename], { cwd: instanceroot + '/' + repo }] |
|
|
] |
|
|
] |
|
|
} |
|
|
} |
|
|
var x = (args) => { |
|
|
var x = (args) => { |
|
|
|
|
|
|
|
|
user = user || processedArgs._[1] |
|
|
user = user || processedArgs._[1] |
|
|
if (!user) throw 'User name required' |
|
|
if (!user) throw 'User name required' |
|
|
var serial_perform_init_gitea = (repo) => { |
|
|
var serial_perform_init_gitea = (repo) => { |
|
|
var options = { cwd: repo } |
|
|
|
|
|
|
|
|
var options = { cwd: instanceroot + '/' + repo } |
|
|
// console.log(repo) |
|
|
// console.log(repo) |
|
|
return [ |
|
|
return [ |
|
|
['git', ['remote', 'add', 'chess', `${defaultRepoServer}/${user}/${repo}.git`], { cwd: repo }] |
|
|
|
|
|
, ['git', ['remote', 'set-url', '--push', 'chess', 'no-pushing'], { cwd: repo }] |
|
|
|
|
|
, ['git', ['remote', 'set-url', 'origin', `${defaultRepoServer}/${user}/${repo}.git`], { cwd: repo }] |
|
|
|
|
|
|
|
|
['git', ['remote', 'add', 'chess', `${defaultRepoServer}/${user}/${repo}.git`], { cwd: instanceroot + '/' + repo }] |
|
|
|
|
|
, ['git', ['remote', 'set-url', '--push', 'chess', 'no-pushing'], { cwd: instanceroot + '/' + repo }] |
|
|
|
|
|
, ['git', ['remote', 'set-url', 'origin', `${defaultRepoServer}/${user}/${repo}.git`], { cwd: instanceroot + '/' + repo }] |
|
|
] |
|
|
] |
|
|
} |
|
|
} |
|
|
var x = (args) => { |
|
|
var x = (args) => { |
|
|
|
|
|
|
|
|
// console.dir(env) |
|
|
// console.dir(env) |
|
|
console.log('Running exlr pull : ' + path.dirname(__dirname)) |
|
|
console.log('Running exlr pull : ' + path.dirname(__dirname)) |
|
|
|
|
|
|
|
|
// SAM : TODO Exclude data repo |
|
|
|
|
|
if (!processedArgs.runas) gitRepos.map((repo) => performPull(repo, 'master')) |
|
|
if (!processedArgs.runas) gitRepos.map((repo) => performPull(repo, 'master')) |
|
|
if (__isElevated) { |
|
|
if (__isElevated) { |
|
|
return any(elevatedRunasRepos.map((repo) => performPull(repo, 'master'))).then(() => { |
|
|
return any(elevatedRunasRepos.map((repo) => performPull(repo, 'master'))).then(() => { |
|
|
|
|
|
|
|
|
, 'npmi': () => { |
|
|
, 'npmi': () => { |
|
|
var tasks = []; |
|
|
var tasks = []; |
|
|
|
|
|
|
|
|
|
|
|
// Build fails without babel... |
|
|
|
|
|
tasks.push(getShellTask( |
|
|
|
|
|
'npm',[ 'i', '-g', 'babel-cli' ] |
|
|
|
|
|
) ) |
|
|
|
|
|
|
|
|
var npmbuildrepos = ['loopback-jsonapi-model-serializer'] |
|
|
var npmbuildrepos = ['loopback-jsonapi-model-serializer'] |
|
|
|
|
|
npmbuildrepos = [] |
|
|
npmbuildrepos.forEach(repo => { |
|
|
npmbuildrepos.forEach(repo => { |
|
|
tasks.push(() => { |
|
|
tasks.push(() => { |
|
|
return nodeShellExec('npm', ['i --force'], { |
|
|
return nodeShellExec('npm', ['i --force'], { |
|
|
inherit: true, shell: true |
|
|
inherit: true, shell: true |
|
|
, cwd: repo |
|
|
|
|
|
|
|
|
, cwd: instanceroot + '/' + repo |
|
|
, env: process.env |
|
|
, env: process.env |
|
|
, title: `npm i for ${repo}` |
|
|
, title: `npm i for ${repo}` |
|
|
}).catch((e) => { |
|
|
}).catch((e) => { |
|
|
|
|
|
|
|
|
console.log(`--------------------npm run build for ${repo}--------------------`) |
|
|
console.log(`--------------------npm run build for ${repo}--------------------`) |
|
|
return nodeShellExec('npm', ['run build'], { |
|
|
return nodeShellExec('npm', ['run build'], { |
|
|
inherit: true, shell: true |
|
|
inherit: true, shell: true |
|
|
, cwd: repo |
|
|
|
|
|
|
|
|
, cwd: instanceroot + '/' + repo |
|
|
, env: process.env |
|
|
, env: process.env |
|
|
, title: `npm run build for ${repo}` |
|
|
, title: `npm run build for ${repo}` |
|
|
}).then(Tasq.then).catch(Tasq.catch) |
|
|
}).then(Tasq.then).catch(Tasq.catch) |
|
|
|
|
|
|
|
|
gitRepos.push('client/server'); |
|
|
gitRepos.push('client/server'); |
|
|
gitRepos = gitRepos.concat(elevatedRunasRepos); |
|
|
gitRepos = gitRepos.concat(elevatedRunasRepos); |
|
|
|
|
|
|
|
|
|
|
|
// gitRepos = [ |
|
|
|
|
|
// // 'bbhverse', 'serververse', 'elixir-server', |
|
|
|
|
|
// // 'clientverse', |
|
|
|
|
|
// 'client' |
|
|
|
|
|
// ]; |
|
|
var rmtasks = [] |
|
|
var rmtasks = [] |
|
|
var repotasks = [] |
|
|
var repotasks = [] |
|
|
|
|
|
var env = Object.assign({}, process.env) |
|
|
|
|
|
delete env.NODE_ENV |
|
|
gitRepos.forEach(repo => { |
|
|
gitRepos.forEach(repo => { |
|
|
|
|
|
|
|
|
rmtasks.push(() => { |
|
|
|
|
|
console.log(`--------------------rm package-lock.json for ${repo}--------------------`) |
|
|
|
|
|
return nodeShellExec('rm', ['package-lock.json'], { |
|
|
|
|
|
inherit: true, shell: true |
|
|
|
|
|
, cwd: repo |
|
|
|
|
|
, env: process.env |
|
|
|
|
|
, title: `rm 'package-lock.json' for ${repo}` |
|
|
|
|
|
}).catch((e) => { console.error(e) }) |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
rmtasks.push( |
|
|
|
|
|
// () => { |
|
|
|
|
|
// console.log(`--------------------rm package-lock.json for ${repo}--------------------`) |
|
|
|
|
|
// return nodeShellExec(`"${gitbash}"`, ['-c', '"rm package-lock.json"'], { |
|
|
|
|
|
nodeShellExec('rm', ['package-lock.json'], { |
|
|
|
|
|
inherit: true, shell: true |
|
|
|
|
|
, cwd: instanceroot + '/' + repo |
|
|
|
|
|
, env: process.env |
|
|
|
|
|
, title: `rm 'package-lock.json' for ${repo}` |
|
|
|
|
|
}) |
|
|
|
|
|
.then(()=>{ |
|
|
|
|
|
console.log(`--------------------rm package-lock.json for ${repo}--------------------`) |
|
|
|
|
|
}).catch((e) => { console.error(e) }) |
|
|
|
|
|
// } |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
if (npmbuildrepos.indexOf(repo) < 0) { |
|
|
if (npmbuildrepos.indexOf(repo) < 0) { |
|
|
repotasks.push( |
|
|
repotasks.push( |
|
|
() => { |
|
|
() => { |
|
|
console.log(`--------------------npm i for ${repo}--------------------`) |
|
|
console.log(`--------------------npm i for ${repo}--------------------`) |
|
|
var p = nodeShellExec('npm', ['i --force'], { |
|
|
|
|
|
|
|
|
var p = nodeShellExec('npm', ['i', '--force'], { |
|
|
inherit: true, shell: true |
|
|
inherit: true, shell: true |
|
|
, cwd: repo |
|
|
|
|
|
, env: process.env |
|
|
|
|
|
|
|
|
, cwd: instanceroot + '/' + repo |
|
|
|
|
|
, env |
|
|
, title: `npm i for ${repo}` |
|
|
, title: `npm i for ${repo}` |
|
|
}).then(Tasq.then).catch(Tasq.catch) |
|
|
|
|
|
|
|
|
}).then(Tasq.then).catch(Tasq.catch) |
|
|
return p; |
|
|
return p; |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// PB : NOTE -- npm i for client does not complete when NODE_ENV=production |
|
|
|
|
|
// therefore bower doesn't get installed !!! which then fails installing the bower dependenciew !!! |
|
|
|
|
|
// We work around this by running npm i for client without any NODE_ENV which probably defualts to development. |
|
|
|
|
|
// PB : TODO -- Investigate why NODE_ENF has an impact on npm i !?? |
|
|
|
|
|
// Second time try also doesnt work. |
|
|
|
|
|
// repotasks.push( |
|
|
|
|
|
// () => { |
|
|
|
|
|
// var env = Object.assign({}, process.env) |
|
|
|
|
|
// delete env.NODE_ENV |
|
|
|
|
|
// console.log(`--------------------second time npm i for client--------------------`) |
|
|
|
|
|
// return nodeShellExec(`"${gitbash}"`, ['-c', '"npm i --force"'], { |
|
|
|
|
|
// // return nodeShellExec('npm', ['i --force'], { |
|
|
|
|
|
// inherit: true, shell: true |
|
|
|
|
|
// , cwd: instanceroot + '/' + 'client' |
|
|
|
|
|
// , env |
|
|
|
|
|
// , title: `npm i for client` |
|
|
|
|
|
// }).then(Tasq.then).catch(Tasq.catch) |
|
|
|
|
|
// }) |
|
|
|
|
|
|
|
|
var bowerRepos = ['client'] |
|
|
var bowerRepos = ['client'] |
|
|
bowerRepos.forEach(repo => { |
|
|
bowerRepos.forEach(repo => { |
|
|
repotasks.push(() => { |
|
|
repotasks.push(() => { |
|
|
var p = nodeShellExec('bower', ['install'], { |
|
|
|
|
|
|
|
|
console.log(instanceroot + '/' + repo + '/node_modules/bower/bin/bower') |
|
|
|
|
|
// var p = nodeShellExec('node_modules/bower/bin/bower', ['install'], { |
|
|
|
|
|
var p = nodeShellExec(`"${gitbash}"`, ['-c', '"node_modules/bower/bin/bower i"'], { |
|
|
|
|
|
|
|
|
inherit: true, shell: true |
|
|
inherit: true, shell: true |
|
|
, cwd: repo |
|
|
|
|
|
|
|
|
, cwd: instanceroot + '/' + repo |
|
|
, env: process.env |
|
|
, env: process.env |
|
|
, title: `bower i for ${repo}` |
|
|
, title: `bower i for ${repo}` |
|
|
}).then(Tasq.then).catch(Tasq.catch) |
|
|
}).then(Tasq.then).catch(Tasq.catch) |
|
|
return p; |
|
|
return p; |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
// console.log('rmtasks.length : ' + rmtasks.length) |
|
|
return Promise.all(rmtasks).then(() => any(repotasks)); |
|
|
return Promise.all(rmtasks).then(() => any(repotasks)); |
|
|
}).catch(e => { |
|
|
}).catch(e => { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
shell: true, |
|
|
shell: true, |
|
|
detached: true, |
|
|
detached: true, |
|
|
stdio: 'ignore', |
|
|
stdio: 'ignore', |
|
|
cwd: 'elixir-server' |
|
|
|
|
|
|
|
|
cwd: instanceroot + '/' + 'elixir-server' |
|
|
, env: env |
|
|
, env: env |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
shell: true, |
|
|
shell: true, |
|
|
detached: true, |
|
|
detached: true, |
|
|
stdio: 'ignore', |
|
|
stdio: 'ignore', |
|
|
cwd: 'client' |
|
|
|
|
|
|
|
|
cwd: instanceroot + '/' + 'client' |
|
|
, env: env |
|
|
, env: env |
|
|
}) |
|
|
}) |
|
|
// .catch(e=>console.error(e)) |
|
|
// .catch(e=>console.error(e)) |
|
|
|
|
|
|
|
|
return nodeShellExec('git', ['checkout', branch || checkoutMap[runconfig.NODE_ENV] || runconfig.NODE_ENV], { |
|
|
return nodeShellExec('git', ['checkout', branch || checkoutMap[runconfig.NODE_ENV] || runconfig.NODE_ENV], { |
|
|
// return nodeShellExec('git', ['switch', '-m', '-C', checkoutMap[runconfig.NODE_ENV] || runconfig.NODE_ENV], { |
|
|
// return nodeShellExec('git', ['switch', '-m', '-C', checkoutMap[runconfig.NODE_ENV] || runconfig.NODE_ENV], { |
|
|
// inherit : true, shell: true, |
|
|
// inherit : true, shell: true, |
|
|
cwd: repo |
|
|
|
|
|
|
|
|
cwd: instanceroot + '/' + repo |
|
|
// , stdio : ignore // Use when we want to silcence output completely. |
|
|
// , stdio : ignore // Use when we want to silcence output completely. |
|
|
, runas: processedArgs.runas |
|
|
, runas: processedArgs.runas |
|
|
, title: `git checkout ${branch || checkoutMap[runconfig.NODE_ENV] || runconfig.NODE_ENV} for ${repo}` |
|
|
, title: `git checkout ${branch || checkoutMap[runconfig.NODE_ENV] || runconfig.NODE_ENV} for ${repo}` |
|
|
}).catch((e) => { console.error(e); return { error: true, message: repo } }) |
|
|
|
|
|
|
|
|
}).then(()=>{ console.log( `SUCCESS : git checkout ${branch || checkoutMap[runconfig.NODE_ENV] || runconfig.NODE_ENV} for ${repo}` ) }).catch((e) => { console.error(e); return { error: true, message: repo } }) |
|
|
} |
|
|
} |
|
|
if (runconfig.NODE_ENV === 'development') performCheckout = () => { return Promise.resolve(true) } |
|
|
if (runconfig.NODE_ENV === 'development') performCheckout = () => { return Promise.resolve(true) } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (excludeCheckouts[repo]) return Promise.resolve({ 'skipped': true }) |
|
|
if (excludeCheckouts[repo]) return Promise.resolve({ 'skipped': true }) |
|
|
return nodeShellExec('git', ['pull', '--all'], { |
|
|
return nodeShellExec('git', ['pull', '--all'], { |
|
|
// inherit : true, shell: true, |
|
|
// inherit : true, shell: true, |
|
|
cwd: repo |
|
|
|
|
|
|
|
|
cwd: instanceroot + '/' + repo |
|
|
, runas: processedArgs.runas |
|
|
, runas: processedArgs.runas |
|
|
, title: `git pull -all for ${checkoutMap[runconfig.NODE_ENV] || runconfig.NODE_ENV} ${repo}` |
|
|
, title: `git pull -all for ${checkoutMap[runconfig.NODE_ENV] || runconfig.NODE_ENV} ${repo}` |
|
|
}).catch((e) => { console.error(e); return { error: true, message: repo } }) |
|
|
}).catch((e) => { console.error(e); return { error: true, message: repo } }) |
|
|
|
|
|
|
|
|
if (exludeMergeRepos[repo]) return Promise.resolve({ 'skipped': true }) |
|
|
if (exludeMergeRepos[repo]) return Promise.resolve({ 'skipped': true }) |
|
|
return nodeShellExec('git', ['merge', mergeSource], { |
|
|
return nodeShellExec('git', ['merge', mergeSource], { |
|
|
inherit: true, shell: true, |
|
|
inherit: true, shell: true, |
|
|
cwd: repo |
|
|
|
|
|
|
|
|
cwd: instanceroot + '/' + repo |
|
|
, runas: processedArgs.runas |
|
|
, runas: processedArgs.runas |
|
|
}).catch((e) => { console.error(e) }) |
|
|
}).catch((e) => { console.error(e) }) |
|
|
} |
|
|
} |
|
|
if (runconfig.NODE_ENV === 'development') performMerge = () => { return Promise.resolve(true) } |
|
|
if (runconfig.NODE_ENV === 'development') performMerge = () => { return Promise.resolve(true) } |
|
|
|
|
|
|
|
|
any(tasks).then(() => { |
|
|
|
|
|
|
|
|
return any(tasks).then(() => { |
|
|
if (!processedArgs.runas) return op['runas']() |
|
|
if (!processedArgs.runas) return op['runas']() |
|
|
|
|
|
|
|
|
tasks = [ |
|
|
tasks = [ |
|
|
|
|
|
|
|
|
// Use junctions to avoid npm package issues |
|
|
// Use junctions to avoid npm package issues |
|
|
var p = nodeShellExec('mklink', ['/J', 'config', runconfig.use + '-config' + '-' + process.env.NODE_ENV], { |
|
|
var p = nodeShellExec('mklink', ['/J', 'config', runconfig.use + '-config' + '-' + process.env.NODE_ENV], { |
|
|
inherit: true, shell: true |
|
|
inherit: true, shell: true |
|
|
|
|
|
, cwd : instanceroot |
|
|
, env: process.env |
|
|
, env: process.env |
|
|
}).catch((e) => { console.error(e) }) |
|
|
}).catch((e) => { console.error(e) }) |
|
|
return p; |
|
|
return p; |
|
|
|
|
|
|
|
|
() => { |
|
|
() => { |
|
|
var p = nodeShellExec('mklink', ['/J', 'data', runconfig.use + '-data'], { |
|
|
var p = nodeShellExec('mklink', ['/J', 'data', runconfig.use + '-data'], { |
|
|
inherit: true, shell: true |
|
|
inherit: true, shell: true |
|
|
|
|
|
, cwd : instanceroot |
|
|
, env: process.env |
|
|
, env: process.env |
|
|
}).catch((e) => { console.error(e) }) |
|
|
}).catch((e) => { console.error(e) }) |
|
|
return p; |
|
|
return p; |
|
|
|
|
|
|
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
var launchpath = process.cwd() |
|
|
|
|
|
|
|
|
var launchpath = process.cwd().replace(/\\/, '/') |
|
|
var thisscriptdir = __dirname |
|
|
var thisscriptdir = __dirname |
|
|
var instanceroot = launchpath; |
|
|
var instanceroot = launchpath; |
|
|
var detectInstance = function () { |
|
|
var detectInstance = function () { |
|
|
|
|
|
|
|
|
// It could be a standalone elxr build which may or maynot be in the proper location. |
|
|
// It could be a standalone elxr build which may or maynot be in the proper location. |
|
|
if (BUILD_VERSION.indexOf('Version: {version} - built on {date}') > -1) { |
|
|
if (BUILD_VERSION.indexOf('Version: {version} - built on {date}') > -1) { |
|
|
// Unbuilt therefore we are in the elxr directory. |
|
|
// Unbuilt therefore we are in the elxr directory. |
|
|
root = path.normalize(launchpath + '../'); |
|
|
|
|
|
|
|
|
root = path.normalize(launchpath + '/..'); |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
// Built version. |
|
|
// Built version. |
|
|
// check if we have a elxr subfolder. |
|
|
// check if we have a elxr subfolder. |
|
|
if (fs.existsSync(launchpath + '/..' + path.normalize('/elxr'))) { |
|
|
if (fs.existsSync(launchpath + '/..' + path.normalize('/elxr'))) { |
|
|
// Probably in the right place. |
|
|
|
|
|
|
|
|
// Probably in the right place. |
|
|
root = path.normalize(launchpath + '/..'); |
|
|
root = path.normalize(launchpath + '/..'); |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
instanceroot = root; |
|
|
|
|
|
|
|
|
instanceroot = root.replace(/\\/, '/'); |
|
|
var __default = { |
|
|
var __default = { |
|
|
|
|
|
|
|
|
// Default is public server only. |
|
|
// Default is public server only. |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
catch (e) { |
|
|
catch (e) { |
|
|
console.error(e) |
|
|
console.error(e) |
|
|
console.error('No local instances found in current root = ' + selectedinstance.root); |
|
|
|
|
|
console.log('We will create a new one with the instance and environment chosen...') |
|
|
|
|
|
|
|
|
console.error('No local instances config found in current root = ' + selectedinstance.root); |
|
|
|
|
|
console.log('A config will be createed with the instance and environment chosen...') |
|
|
} |
|
|
} |
|
|
finally { |
|
|
finally { |
|
|
|
|
|
|