|
|
|
|
|
|
|
|
var path = require('path'); |
|
|
var path = require('path'); |
|
|
const { isMaster } = require('cluster'); |
|
|
const { isMaster } = require('cluster'); |
|
|
|
|
|
|
|
|
|
|
|
var getCmd = (command, args, options)=>{ |
|
|
|
|
|
return [command, args, Object.assign({ |
|
|
|
|
|
inherit : true, shell: true, title : `${command} ` |
|
|
|
|
|
}, options) |
|
|
|
|
|
] |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
var getPullCmd = (repo)=>{ |
|
|
var getPullCmd = (repo)=>{ |
|
|
// console.log(useGitPull) |
|
|
// console.log(useGitPull) |
|
|
|
|
|
|
|
|
var pullCmd = [ gitInstallDir |
|
|
var pullCmd = [ gitInstallDir |
|
|
, ['-c', 'for i in `git remote`; do git pull $i master; 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 : 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 getCmd = (command, args, options)=>{ |
|
|
|
|
|
return [command, args, Object.assign({ |
|
|
|
|
|
inherit : true, shell: true, title : `${command} ` |
|
|
|
|
|
}, options) |
|
|
|
|
|
] |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var performPull = (repo) => { |
|
|
|
|
|
|
|
|
|
|
|
if(exludeMergeRepos[repo]) return Promise.resolve({ 'skipped' : true }) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var performPull = (repo) => { |
|
|
if(existsSync(repo)) { |
|
|
if(existsSync(repo)) { |
|
|
console.log('pulling ' + repo) |
|
|
console.log('pulling ' + repo) |
|
|
return nodeShellExec.apply(null, getPullCmd(repo)).catch((e)=>{ console.error(e) }) |
|
|
|
|
|
|
|
|
return nodeShellExec.apply(null, getPullCmd(repo)).then(()=>{ |
|
|
|
|
|
if(__isElevated) { |
|
|
|
|
|
fs.writeFileSync('run.log', ', ' + JSON.stringify({ repo, success:true}), {'flag':'a+'} ) |
|
|
|
|
|
} |
|
|
|
|
|
else statuslog.statuslog(null, repo) |
|
|
|
|
|
return true; |
|
|
|
|
|
}) |
|
|
|
|
|
.catch((e)=>{ |
|
|
|
|
|
e.repo = repo; |
|
|
|
|
|
if(__isElevated) { |
|
|
|
|
|
fs.writeFileSync('run.log', ', ' + JSON.stringify(e), {'flag':'a+'} ) |
|
|
|
|
|
} |
|
|
|
|
|
else statuslog.statuslog(e); console.error(e) |
|
|
|
|
|
}) |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
console.log('cloning ' + repo) |
|
|
console.log('cloning ' + repo) |
|
|
|
|
|
|
|
|
inherit : true, shell: true, |
|
|
inherit : true, shell: true, |
|
|
env: process.env |
|
|
env: process.env |
|
|
, runas : processedArgs.runas |
|
|
, runas : processedArgs.runas |
|
|
}).catch((e)=>{ console.error(e) }).then(()=>{ |
|
|
|
|
|
|
|
|
}).catch((e)=>{ |
|
|
|
|
|
throw e; |
|
|
|
|
|
}).then(()=>{ |
|
|
|
|
|
|
|
|
return nodeShellExec('git', ['config', '--replace-all' , 'core.symlinks', true], |
|
|
return nodeShellExec('git', ['config', '--replace-all' , 'core.symlinks', true], |
|
|
{ |
|
|
{ |
|
|
|
|
|
|
|
|
, 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'}` |
|
|
}) |
|
|
}) |
|
|
|
|
|
.then(()=>{ |
|
|
|
|
|
if(__isElevated) { |
|
|
|
|
|
fs.writeFileSync('run.log', ', ' + JSON.stringify({ repo, success:true}), {'flag':'a+'} ) |
|
|
|
|
|
} |
|
|
|
|
|
else statuslog.statuslog(null, repo) |
|
|
|
|
|
}) |
|
|
|
|
|
.catch((e)=>{ |
|
|
|
|
|
e.repo = repo; |
|
|
|
|
|
if(__isElevated) { |
|
|
|
|
|
fs.writeFileSync('run.log', ', ' + JSON.stringify(e), {'flag':'a+'} ) |
|
|
|
|
|
} |
|
|
|
|
|
else statuslog.statuslog(e); |
|
|
|
|
|
}) |
|
|
|
|
|
}) |
|
|
|
|
|
.catch(e=>{ |
|
|
|
|
|
e.repo = repo; |
|
|
|
|
|
if(__isElevated) { |
|
|
|
|
|
fs.writeFileSync('run.log', ', ' + JSON.stringify(e), {'flag':'a+'} ) |
|
|
|
|
|
} |
|
|
|
|
|
else statuslog.statuslog(e); |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
var args = [__dirname + '/windowselevate.hta'].concat(processedArgs._).concat(namedArgs.join(' ')); args.push('--runas=self'); |
|
|
var args = [__dirname + '/windowselevate.hta'].concat(processedArgs._).concat(namedArgs.join(' ')); args.push('--runas=self'); |
|
|
args.push('--nodepath='+r[r.length-1]) |
|
|
args.push('--nodepath='+r[r.length-1]) |
|
|
args.push('--node_env='+env.NODE_ENV) |
|
|
args.push('--node_env='+env.NODE_ENV) |
|
|
if(_.debug) args.push('--debug=true') // Enable to debug elevated.. |
|
|
|
|
|
|
|
|
if(processedArgs.debug) args.push('--debug=true') // Enable to debug elevated.. |
|
|
|
|
|
|
|
|
return nodeShellExec('MSHTA', [`"${args.join('" "')}"`] |
|
|
return nodeShellExec('MSHTA', [`"${args.join('" "')}"`] |
|
|
, { |
|
|
, { |
|
|
|
|
|
|
|
|
console.log('Running exlr pull : ' + path.dirname(__dirname)) |
|
|
console.log('Running exlr pull : ' + path.dirname(__dirname)) |
|
|
|
|
|
|
|
|
var useGitPull = processedArgs.useGitPull || false; |
|
|
var useGitPull = processedArgs.useGitPull || false; |
|
|
var getPullCmd = (repo)=>{ |
|
|
|
|
|
// console.log(useGitPull) |
|
|
|
|
|
|
|
|
|
|
|
var pullCmd = [ gitInstallDir |
|
|
|
|
|
, ['-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 }] |
|
|
|
|
|
// 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) => { |
|
|
|
|
|
if(existsSync(repo)) { |
|
|
|
|
|
console.log('pulling ' + repo) |
|
|
|
|
|
return nodeShellExec.apply(null, getPullCmd(repo)).then(()=>{ |
|
|
|
|
|
if(__isElevated) { |
|
|
|
|
|
fs.writeFileSync('run.log', ', ' + JSON.stringify({ repo, success:true}), {'flag':'a+'} ) |
|
|
|
|
|
} |
|
|
|
|
|
else statuslog.statuslog(null, repo) |
|
|
|
|
|
return true; |
|
|
|
|
|
}) |
|
|
|
|
|
.catch((e)=>{ |
|
|
|
|
|
e.repo = repo; |
|
|
|
|
|
if(__isElevated) { |
|
|
|
|
|
fs.writeFileSync('run.log', ', ' + JSON.stringify(e), {'flag':'a+'} ) |
|
|
|
|
|
} |
|
|
|
|
|
else statuslog.statuslog(e); console.error(e) |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
// PB : TODO -- detect if a clonable repo exists in currentGitAuthUser |
|
|
|
|
|
return nodeShellExec('git', ['clone', '-c', 'core.symlinks=true', defaultRepoServer + `/${defaultRepoOwner}/` + repo + '.git'], |
|
|
|
|
|
{ |
|
|
|
|
|
inherit : true, shell: true, |
|
|
|
|
|
env: process.env |
|
|
|
|
|
, runas : processedArgs.runas |
|
|
|
|
|
}).catch((e)=>{ |
|
|
|
|
|
throw e; |
|
|
|
|
|
}).then(()=>{ |
|
|
|
|
|
|
|
|
|
|
|
return nodeShellExec('git', ['config', '--replace-all' , 'core.symlinks', true], |
|
|
|
|
|
{ |
|
|
|
|
|
inherit : true, shell: true, |
|
|
|
|
|
env: process.env |
|
|
|
|
|
, cwd : repo |
|
|
|
|
|
, runas : processedArgs.runas |
|
|
|
|
|
, title : `git core.symlinks --replace-all true for ${defaultRepoServer + `/${defaultRepoOwner}/` + repo + '.git'}` |
|
|
|
|
|
}) |
|
|
|
|
|
.then(()=>{ |
|
|
|
|
|
if(__isElevated) { |
|
|
|
|
|
fs.writeFileSync('run.log', ', ' + JSON.stringify({ repo, success:true}), {'flag':'a+'} ) |
|
|
|
|
|
} |
|
|
|
|
|
else statuslog.statuslog(null, repo) |
|
|
|
|
|
}) |
|
|
|
|
|
.catch((e)=>{ |
|
|
|
|
|
e.repo = repo; |
|
|
|
|
|
if(__isElevated) { |
|
|
|
|
|
fs.writeFileSync('run.log', ', ' + JSON.stringify(e), {'flag':'a+'} ) |
|
|
|
|
|
} |
|
|
|
|
|
else statuslog.statuslog(e); |
|
|
|
|
|
}) |
|
|
|
|
|
}) |
|
|
|
|
|
.catch(e=>{ |
|
|
|
|
|
e.repo = repo; |
|
|
|
|
|
if(__isElevated) { |
|
|
|
|
|
fs.writeFileSync('run.log', ', ' + JSON.stringify(e), {'flag':'a+'} ) |
|
|
|
|
|
} |
|
|
|
|
|
else statuslog.statuslog(e); |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(__isElevated){ |
|
|
if(__isElevated){ |
|
|
return any(elevatedRunasRepos.map((repo)=>performPull(repo))).then(()=>{ |
|
|
return any(elevatedRunasRepos.map((repo)=>performPull(repo))).then(()=>{ |
|
|
|
|
|
|
|
|
else { |
|
|
else { |
|
|
// PB : TODO -- Rename op['runas'] to 'elevate' |
|
|
// PB : TODO -- Rename op['runas'] to 'elevate' |
|
|
return op['runas']().then(()=>{ return true; }) |
|
|
return op['runas']().then(()=>{ return true; }) |
|
|
.catch(()=>{}) |
|
|
|
|
|
|
|
|
.catch((e)=>{ |
|
|
|
|
|
console.error(e) |
|
|
|
|
|
}) |
|
|
.finally(()=>{ |
|
|
.finally(()=>{ |
|
|
if(!processedArgs.runas) { |
|
|
if(!processedArgs.runas) { |
|
|
var pendingpulls = []; |
|
|
var pendingpulls = []; |