|
|
@@ -143,8 +143,8 @@ catch(e){ |
|
|
|
} |
|
|
|
|
|
|
|
var handleNext = function(){ |
|
|
|
console.log('Task finished with result : ') |
|
|
|
console.dir(pVal) |
|
|
|
// console.log('Task finished with result : ') |
|
|
|
// console.dir(pVal) |
|
|
|
if(i>0 && a[i-1].info) console.dir(a[i-1].info) |
|
|
|
if(!tasq && !continueOnFailure) { console.log('Error : No task specified.'); throw false;} |
|
|
|
else if(!tasq) { console.log('Error : No task specified.'); return false;} |
|
|
@@ -208,7 +208,7 @@ catch(e){ |
|
|
|
var existsSync = function(filepath){ return fso.FileExists(filepath) } |
|
|
|
var fs = { |
|
|
|
writeFileSync : function(filepath, text) { |
|
|
|
console.log(filepath) |
|
|
|
// console.log(filepath) |
|
|
|
var fh = fso.CreateTextFile(filepath, true); |
|
|
|
fh.WriteLine(text); |
|
|
|
fh.Close(); |
|
|
@@ -268,6 +268,33 @@ catch(e){ |
|
|
|
|
|
|
|
var objShell = WScript.createobject("wscript.shell") |
|
|
|
var oExec = objShell.Exec(cmd + ' ' + argstr.join(' ')) |
|
|
|
var result = {} |
|
|
|
var shellresult = { shell : objShell, result : result } |
|
|
|
|
|
|
|
var WshRunning = 0 |
|
|
|
var WshFinished = 1 |
|
|
|
var WshFailed = 2 |
|
|
|
while(oExec.Status === WshRunning){ |
|
|
|
WScript.StdOut.write('.') |
|
|
|
WScript.Sleep(500) |
|
|
|
} |
|
|
|
var strOutput = '' |
|
|
|
switch(oExec.Status) { |
|
|
|
case WshFinished : |
|
|
|
strOutput = oExec.StdOut.ReadAll() |
|
|
|
result.success = true; |
|
|
|
result.code = 0 |
|
|
|
break; |
|
|
|
case WshFailed : |
|
|
|
strOutput = oExec.StdErr.ReadAll() |
|
|
|
result.success = false; |
|
|
|
result.code = WshFailed |
|
|
|
break; |
|
|
|
default : strOutput = 'failed' |
|
|
|
break; |
|
|
|
} |
|
|
|
result.result = command + ' ' + cargs + ' exited with code ' + result.code |
|
|
|
result.messages = [strOutput] |
|
|
|
// WScript.Echo(oExec.Status) |
|
|
|
// WScript.Echo(oExec.ProcessID) |
|
|
|
// WScript.Echo(oExec.ExitCode) |
|
|
@@ -275,24 +302,25 @@ catch(e){ |
|
|
|
// console.log(objShell.StdOut.ReadAll) |
|
|
|
// console.log(objShell.StdErr.ReadAll) |
|
|
|
|
|
|
|
return objShell; |
|
|
|
return shellresult; |
|
|
|
} |
|
|
|
|
|
|
|
var p = null; |
|
|
|
var pworker = function(resolve, reject){ |
|
|
|
// console.dir(p) |
|
|
|
var pfx = selectedinstance.root + '/.elxr/run-' + runtimestamp + '/' + stampedFilePfx(new Date()) |
|
|
|
console.log('p.chain.length ================ ' + p.chain.length) |
|
|
|
// console.log('p.chain.length ================ ' + p.chain.length) |
|
|
|
options = options || { |
|
|
|
runFile : path.normalize( pfx + "out.txt") |
|
|
|
// runFile : null |
|
|
|
} |
|
|
|
runFile = options.runFile |
|
|
|
var runFile = null; |
|
|
|
// var runFile = options.runFile |
|
|
|
// var runFile = selectedinstance.root + '\\' + stampedFilePfx(new Date()) + command + cargs + "out.txt"; |
|
|
|
console.log(runFile) |
|
|
|
// console.log(runFile) |
|
|
|
var args = cargs.concat() |
|
|
|
// runFile ? (args.push(">"), args.push(runFile)) : cargs |
|
|
|
console.log(command + ' ' + args.join(' ')) |
|
|
|
// console.log(command + ' ' + args.join(' ')) |
|
|
|
|
|
|
|
// command = 'cmd' |
|
|
|
// args = ['/c', 'start', |
|
|
@@ -303,7 +331,7 @@ catch(e){ |
|
|
|
|
|
|
|
|
|
|
|
var runbat = path.normalize(pfx + "run.bat") |
|
|
|
console.log('runbat : ' + runbat) |
|
|
|
// console.log('runbat : ' + runbat) |
|
|
|
fs.writeFileSync(runbat, command + ' ' + args.join(' ') + ' \r\n' + 'echo done > ' + runFile ) |
|
|
|
// fs.writeFileSync(runFile, 'started') |
|
|
|
// WScript.Quit() |
|
|
@@ -315,31 +343,25 @@ catch(e){ |
|
|
|
// shellExec( command, args) |
|
|
|
// // cmd /b /c |
|
|
|
// }, 500) } |
|
|
|
shellExec( 'cmd', ['/c', runbat]) |
|
|
|
// shellExec( command, args) |
|
|
|
|
|
|
|
console.log(options.waitmsg || ('awaiting ' + command + ' ' + args.join(' '))) |
|
|
|
// var shellresult = shellExec( 'cmd', ['/c', runbat]) |
|
|
|
var shellresult = shellExec( command, args) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var wrapup = function() { |
|
|
|
console.log('Wrapping up') |
|
|
|
var wrapup = function(result) { |
|
|
|
// console.log('Wrapping up') |
|
|
|
try { |
|
|
|
var strFileText = fs.readFileSync(runFile) |
|
|
|
var messages = []; |
|
|
|
messages.push(strFileText) |
|
|
|
var result = { result : command + ' ' + cargs + ' exited with code ???', messages : messages, code : 0, success : true } |
|
|
|
console.log('resolving'); console.dir(result) |
|
|
|
resolve(result) |
|
|
|
// fs.unlinkSync(runFile) |
|
|
|
} |
|
|
|
catch(e){ |
|
|
|
// console.dir(e) |
|
|
|
if(e.message === 'Input past end of file') { |
|
|
|
var result = { result : 'cmd /c ' + command + ' ' + cargs + " > " + runFile + ' exited with code ???', messages : [] , code : 0, success : false } |
|
|
|
// console.log('resolving'); console.dir(result) |
|
|
|
resolve(result) |
|
|
|
// fs.unlinkSync(runFile) |
|
|
|
} |
|
|
|
else { |
|
|
|
// fs.unlinkSync(runFile) |
|
|
|
reject(e) |
|
|
|
} |
|
|
|
} |
|
|
@@ -347,14 +369,25 @@ catch(e){ |
|
|
|
|
|
|
|
if(runFile){ |
|
|
|
var waitr = function(){ |
|
|
|
console.log('awiting output : ' + runFile) |
|
|
|
if(existsSync(runFile)) return wrapup() |
|
|
|
WScript.StdOut.write('.') |
|
|
|
if(existsSync(runFile)) { |
|
|
|
var strOutput = fs.readFileSync(runFile) |
|
|
|
shellresult.result.messages = [strOutput] |
|
|
|
wrapup(shellresult.result) |
|
|
|
sfs.unlinkSync(runFile) |
|
|
|
} |
|
|
|
wait( waitr, 500) |
|
|
|
} |
|
|
|
console.log(wait) |
|
|
|
// console.log(wait) |
|
|
|
|
|
|
|
wait( waitr, 500) |
|
|
|
} |
|
|
|
else wrapup() |
|
|
|
else { |
|
|
|
// console.log('There is no runfile.') |
|
|
|
// console.log(shellresult.strOutput) |
|
|
|
|
|
|
|
wrapup(shellresult.result) |
|
|
|
} |
|
|
|
} |
|
|
|
p = new Promise(pworker) |
|
|
|
// promises.push(p) |
|
|
@@ -416,7 +449,7 @@ function createPromiseClass(overrides) { |
|
|
|
} |
|
|
|
else { |
|
|
|
// console.log( 'result is value waiting for promisechain' ) |
|
|
|
console.dir(result) |
|
|
|
// console.dir(result) |
|
|
|
return p.processchain(result) |
|
|
|
} |
|
|
|
}; |
|
|
@@ -427,7 +460,7 @@ function createPromiseClass(overrides) { |
|
|
|
var i = __i; |
|
|
|
var __e = null; |
|
|
|
p = this; |
|
|
|
console.log('processchain chain.length : ' + p.chain.length) |
|
|
|
// console.log('processchain chain.length : ' + p.chain.length) |
|
|
|
|
|
|
|
function __processchain(r){ |
|
|
|
|
|
|
@@ -445,7 +478,8 @@ function createPromiseClass(overrides) { |
|
|
|
p.result.start() |
|
|
|
// console.log(p.result.fn + ' ------------------ ') |
|
|
|
waitForResult(p.result, function(r){ |
|
|
|
console.log('we waited') |
|
|
|
// console.log('we waited') |
|
|
|
// WScript.write('.') |
|
|
|
p.result = r; i++; __i = i; |
|
|
|
waitForThen(p) |
|
|
|
}) |
|
|
@@ -509,7 +543,7 @@ function createPromiseClass(overrides) { |
|
|
|
then : function(thenfn){ |
|
|
|
// console.log('Adding then') |
|
|
|
thenfn.isThen = true |
|
|
|
if(Object.prototype.toString.call(p.chain) !== '[object Array]') console.dir(p.chain) |
|
|
|
// if(Object.prototype.toString.call(p.chain) !== '[object Array]') console.dir(p.chain) |
|
|
|
p.chain.push(thenfn) |
|
|
|
return p; |
|
|
|
} |
|
|
@@ -648,8 +682,8 @@ function createPromiseClass(overrides) { |
|
|
|
} |
|
|
|
} |
|
|
|
if(allResolved) { |
|
|
|
console.log('All Reseloved') |
|
|
|
console.dir(results) |
|
|
|
// console.log('All Reseloved') |
|
|
|
// console.dir(results) |
|
|
|
resolve(results) |
|
|
|
} |
|
|
|
else wait(allwaitr, 500) |
|
|
@@ -729,11 +763,12 @@ function __main( selectedinstance ){ |
|
|
|
var installtasks = []; |
|
|
|
prerequisites.forEach(function(preq) { |
|
|
|
var p = preq.exists().then(function(exists) { |
|
|
|
if (exists && false) console.log( preq.shellcmd + ' exists'); |
|
|
|
if (exists) console.log( preq.shellcmd + ' exists'); |
|
|
|
else { |
|
|
|
console.log(exists) |
|
|
|
console.log(preq.shellcmd + ' is not installed'); |
|
|
|
return preq.preinstallsteps().then(function(){ |
|
|
|
console.log(' task.install : ' + preq.install) |
|
|
|
// console.log(' task.install : ' + preq.install) |
|
|
|
installtasks.push( function(){ return preq.install() } ); |
|
|
|
}) |
|
|
|
} |
|
|
@@ -744,7 +779,7 @@ function __main( selectedinstance ){ |
|
|
|
// console.log('downloadtasks') |
|
|
|
// console.dir(downloadtasks[0]) |
|
|
|
var p = Promise.all(downloadtasks).then(function(){ |
|
|
|
console.log('calling install tasks : ' + installtasks.length) |
|
|
|
// console.log('calling install tasks : ' + installtasks.length) |
|
|
|
return any(installtasks) }) |
|
|
|
|
|
|
|
// console.log('Promise.all.chain : ' + p.chain) |
|
|
@@ -766,142 +801,142 @@ function __main( selectedinstance ){ |
|
|
|
// } |
|
|
|
|
|
|
|
var prerequisites = [ |
|
|
|
// { |
|
|
|
// shellcmd: 'git', |
|
|
|
// url: 'https://github.com/git-for-windows/git/releases/download/v2.33.0.windows.2/Git-2.33.0.2-64-bit.exe' |
|
|
|
// , installer: 'Git-2.33.0.2-64-bit.exe' |
|
|
|
// , installcmd: ['cmd', ['/c', 'start', |
|
|
|
// '/WAIT', downloadsdir + '/' + 'Git-2.33.0.2-64-bit.exe' |
|
|
|
// , '/VERYSILENT' |
|
|
|
// // , '/MERGETASKS=!runcode' // This is required only for vscode... |
|
|
|
// ]] |
|
|
|
// , preinstallsteps: function() { |
|
|
|
// var self = this; |
|
|
|
// console.log('Git preinstall steps') |
|
|
|
|
|
|
|
// var steps = []; |
|
|
|
// steps.push( |
|
|
|
// function(){ |
|
|
|
// // console.log('cli prompt steps') |
|
|
|
// var choices = { 0 : 'guest', 1 : 'chessdemo' } |
|
|
|
// return cli.prompt(choices, 'git user name', gitUser).then(function(choice){ gitUser = choice } ) |
|
|
|
// } |
|
|
|
// ) |
|
|
|
|
|
|
|
// steps.push( |
|
|
|
// function(){ |
|
|
|
// var choices = { 0 : 'guest@bbh.org.in', 1 : 'chessdemo@bbh.org.in' } |
|
|
|
// return cli.prompt(choices, 'git user email', gitEmail).then(function(choice){ gitEmail = choice }) |
|
|
|
// } |
|
|
|
// ) |
|
|
|
// steps.push( |
|
|
|
// function(){ |
|
|
|
// if (!existsSync(downloadsdir + '/' + self.installer)) { |
|
|
|
// return nodeShellExec(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat', [self.url, downloadsdir + '/' + self.installer]) |
|
|
|
// } |
|
|
|
// else { |
|
|
|
// console.log(self.installer + ' Already exits Download skipped.') |
|
|
|
// return Promise.resolve(true) |
|
|
|
// } |
|
|
|
// } |
|
|
|
// ) |
|
|
|
// return any(steps) |
|
|
|
// // return any([any(steps), any(prompts)]) |
|
|
|
// } |
|
|
|
// , installsteps: function () { |
|
|
|
// var self = this; |
|
|
|
// console.log('Git Installsteps called') |
|
|
|
// var ifns = [self.installcmd] |
|
|
|
// ifns.map = map; |
|
|
|
// return any(ifns.map(callsheltask))['catch'](function(e){ |
|
|
|
// if(e.code === 1602) { |
|
|
|
// console.warn("Installation was probably cancelled.") |
|
|
|
// } |
|
|
|
// else throw e |
|
|
|
// }) |
|
|
|
// } |
|
|
|
// , postinstallsteps: function(){ |
|
|
|
|
|
|
|
// // PB : TODO -- Detect failure or cancellation before attenpting postinstall steps... |
|
|
|
// var steps = []; |
|
|
|
// steps.push( |
|
|
|
// function(){ |
|
|
|
// var choices = { 0 : 'guest', 1 : 'chessdemo' } |
|
|
|
// return cli.prompt(choices, 'git user name', gitUser).then(function(choice){ gitUser = choice } ) |
|
|
|
// } |
|
|
|
// ) |
|
|
|
|
|
|
|
// steps.push( |
|
|
|
// function(){ |
|
|
|
// var choices = { 0 : 'guest@bbh.org.in', 1 : 'chessdemo@bbh.org.in' } |
|
|
|
// return cli.prompt(choices, 'git user email', gitEmail).then(function(choice){ gitEmail = choice }) |
|
|
|
// } |
|
|
|
// ) |
|
|
|
|
|
|
|
// return any(steps).then(function(){ |
|
|
|
// var steps = [ |
|
|
|
// ['git', ['config', '--global', '--add', 'user.name', gitUser]] |
|
|
|
// , ['git', ['config', '--global', '--add', 'user.email', gitEmail]] |
|
|
|
// ] |
|
|
|
{ |
|
|
|
shellcmd: 'git', |
|
|
|
url: 'https://github.com/git-for-windows/git/releases/download/v2.33.0.windows.2/Git-2.33.0.2-64-bit.exe' |
|
|
|
, installer: 'Git-2.33.0.2-64-bit.exe' |
|
|
|
, installcmd: ['cmd', ['/c', 'start', |
|
|
|
'/WAIT', downloadsdir + '/' + 'Git-2.33.0.2-64-bit.exe' |
|
|
|
, '/VERYSILENT' |
|
|
|
// , '/MERGETASKS=!runcode' // This is required only for vscode... |
|
|
|
]] |
|
|
|
, preinstallsteps: function() { |
|
|
|
var self = this; |
|
|
|
console.log('Git preinstall steps') |
|
|
|
|
|
|
|
var steps = []; |
|
|
|
steps.push( |
|
|
|
function(){ |
|
|
|
// console.log('cli prompt steps') |
|
|
|
var choices = { 0 : 'guest', 1 : 'chessdemo' } |
|
|
|
return cli.prompt(choices, 'git user name', gitUser).then(function(choice){ gitUser = choice } ) |
|
|
|
} |
|
|
|
) |
|
|
|
|
|
|
|
steps.push( |
|
|
|
function(){ |
|
|
|
var choices = { 0 : 'guest@bbh.org.in', 1 : 'chessdemo@bbh.org.in' } |
|
|
|
return cli.prompt(choices, 'git user email', gitEmail).then(function(choice){ gitEmail = choice }) |
|
|
|
} |
|
|
|
) |
|
|
|
steps.push( |
|
|
|
function(){ |
|
|
|
if (!existsSync(downloadsdir + '/' + self.installer)) { |
|
|
|
return nodeShellExec(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat', [self.url, downloadsdir + '/' + self.installer]) |
|
|
|
} |
|
|
|
else { |
|
|
|
console.log(self.installer + ' Already exits Download skipped.') |
|
|
|
return Promise.resolve(true) |
|
|
|
} |
|
|
|
} |
|
|
|
) |
|
|
|
return any(steps) |
|
|
|
// return any([any(steps), any(prompts)]) |
|
|
|
} |
|
|
|
, installsteps: function () { |
|
|
|
var self = this; |
|
|
|
console.log('Git Installsteps called') |
|
|
|
var ifns = [self.installcmd] |
|
|
|
ifns.map = map; |
|
|
|
return any(ifns.map(callsheltask))['catch'](function(e){ |
|
|
|
if(e.code === 1602) { |
|
|
|
console.warn("Installation was probably cancelled.") |
|
|
|
} |
|
|
|
else throw e |
|
|
|
}) |
|
|
|
} |
|
|
|
, postinstallsteps: function(){ |
|
|
|
|
|
|
|
// PB : TODO -- Detect failure or cancellation before attenpting postinstall steps... |
|
|
|
var steps = []; |
|
|
|
steps.push( |
|
|
|
function(){ |
|
|
|
var choices = { 0 : 'guest', 1 : 'chessdemo' } |
|
|
|
return cli.prompt(choices, 'git user name', gitUser).then(function(choice){ gitUser = choice } ) |
|
|
|
} |
|
|
|
) |
|
|
|
|
|
|
|
steps.push( |
|
|
|
function(){ |
|
|
|
var choices = { 0 : 'guest@bbh.org.in', 1 : 'chessdemo@bbh.org.in' } |
|
|
|
return cli.prompt(choices, 'git user email', gitEmail).then(function(choice){ gitEmail = choice }) |
|
|
|
} |
|
|
|
) |
|
|
|
|
|
|
|
return any(steps).then(function(){ |
|
|
|
var steps = [ |
|
|
|
['git', ['config', '--global', '--add', 'user.name', gitUser]] |
|
|
|
, ['git', ['config', '--global', '--add', 'user.email', gitEmail]] |
|
|
|
] |
|
|
|
|
|
|
|
// steps.map = map; |
|
|
|
// return any(steps.map(callsheltask)).then(function(){ |
|
|
|
|
|
|
|
// }) |
|
|
|
// }); |
|
|
|
// } |
|
|
|
// , install: function () { |
|
|
|
// var self = this; |
|
|
|
// console.log('Git Install called') |
|
|
|
// return any([ /*self.preinstallsteps,*/ function(){ return self.installsteps() }, function(){ return self.postinstallsteps() } ]) |
|
|
|
// } |
|
|
|
// , verifyAndInstall : function(){ |
|
|
|
// var self = this; |
|
|
|
// return self.exists().then( function(exits) { |
|
|
|
// if(exists) return self.getUser(null, function(){ return self.postinstallsteps() } ) |
|
|
|
// else return self.install(); |
|
|
|
// }) |
|
|
|
// } |
|
|
|
// , exists : function(next){ |
|
|
|
// var self = this; |
|
|
|
// return getTaskCheckExists(self.shellcmd, { ignorefailures: true })().then(function(exists) { |
|
|
|
// console.dir(exists) |
|
|
|
// console.log(exists + ' git exists') |
|
|
|
// if(exists && exists.messages.join(' ').indexOf(self.shellcmd) > -1 ) { |
|
|
|
// return true; |
|
|
|
// } |
|
|
|
// else return false |
|
|
|
// }) |
|
|
|
// } |
|
|
|
// , getUser : function(repo, onNoResult){ |
|
|
|
steps.map = map; |
|
|
|
return any(steps.map(callsheltask)).then(function(){ |
|
|
|
|
|
|
|
}) |
|
|
|
}); |
|
|
|
} |
|
|
|
, install: function () { |
|
|
|
var self = this; |
|
|
|
console.log('Git Install called') |
|
|
|
return any([ /*self.preinstallsteps,*/ function(){ return self.installsteps() }, function(){ return self.postinstallsteps() } ]) |
|
|
|
} |
|
|
|
, verifyAndInstall : function(){ |
|
|
|
var self = this; |
|
|
|
return self.exists().then( function(exits) { |
|
|
|
if(exists) return self.getUser(null, function(){ return self.postinstallsteps() } ) |
|
|
|
else return self.install(); |
|
|
|
}) |
|
|
|
} |
|
|
|
, exists : function(next){ |
|
|
|
var self = this; |
|
|
|
return getTaskCheckExists(self.shellcmd, { ignorefailures: true })().then(function(exists) { |
|
|
|
// console.dir(exists) |
|
|
|
// console.log(exists + ' git exists') |
|
|
|
if(exists && exists.messages.join(' ').indexOf(self.shellcmd) > -1 ) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
else return false |
|
|
|
}) |
|
|
|
} |
|
|
|
, getUser : function(repo, onNoResult){ |
|
|
|
|
|
|
|
|
|
|
|
// onNoResult = onNoResult || function(){return false} |
|
|
|
// var globalOrLocal = '--global'; |
|
|
|
// if(!repo) globalOrLocal = '--global'; |
|
|
|
// else globalOrLocal = '--local' |
|
|
|
// var fns = [['git', ['config', globalOrLocal, '--get-all', 'user.name']]] |
|
|
|
// fns.map = map; |
|
|
|
// return any(fns.map(callsheltask)).then(function(result){ |
|
|
|
// // not yet configured. |
|
|
|
// if(!result.success) return onNoResult() |
|
|
|
// else { |
|
|
|
// var users = result.messages[0].trim().split('\n'); |
|
|
|
// if(users.length === 0 || |
|
|
|
// users.length === 1 && users[0] === 'guest') { |
|
|
|
onNoResult = onNoResult || function(){return false} |
|
|
|
var globalOrLocal = '--global'; |
|
|
|
if(!repo) globalOrLocal = '--global'; |
|
|
|
else globalOrLocal = '--local' |
|
|
|
var fns = [['git', ['config', globalOrLocal, '--get-all', 'user.name']]] |
|
|
|
fns.map = map; |
|
|
|
return any(fns.map(callsheltask)).then(function(result){ |
|
|
|
// not yet configured. |
|
|
|
if(!result.success) return onNoResult() |
|
|
|
else { |
|
|
|
var users = result.messages[0].trim().split('\n'); |
|
|
|
if(users.length === 0 || |
|
|
|
users.length === 1 && users[0] === 'guest') { |
|
|
|
|
|
|
|
// return onNoResult() |
|
|
|
// } |
|
|
|
// else return users[0]; // PB : TODO == We should probably prompt with all the users available for selection ! |
|
|
|
// } |
|
|
|
// }) |
|
|
|
// .pcatch(function(e){ |
|
|
|
// console.log(e) |
|
|
|
// return onNoResult() |
|
|
|
// }) |
|
|
|
// } |
|
|
|
// } |
|
|
|
// , |
|
|
|
return onNoResult() |
|
|
|
} |
|
|
|
else return users[0]; // PB : TODO == We should probably prompt with all the users available for selection ! |
|
|
|
} |
|
|
|
}) |
|
|
|
.pcatch(function(e){ |
|
|
|
console.log(e) |
|
|
|
return onNoResult() |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
, |
|
|
|
{ |
|
|
|
shellcmd: 'node', |
|
|
|
url: 'https://nodejs.org/dist/v14.17.6/node-v14.17.6-x64.msi' |
|
|
@@ -924,7 +959,7 @@ function __main( selectedinstance ){ |
|
|
|
, exists : function(next){ |
|
|
|
var self = this; |
|
|
|
return getTaskCheckExists(self.shellcmd, { ignorefailures: true })().then(function(exists) { |
|
|
|
console.log(self.shellcmd + ' ' + exists + ' node exists') |
|
|
|
// console.log(self.shellcmd + ' ' + exists + ' node exists') |
|
|
|
if(exists && exists.messages.join(' ').indexOf(self.shellcmd) > -1 ) { |
|
|
|
return true |
|
|
|
} |
|
|
@@ -942,7 +977,8 @@ function __main( selectedinstance ){ |
|
|
|
steps.push( |
|
|
|
function(){ |
|
|
|
if (!existsSync(downloadsdir + '/' + self.installer)) { |
|
|
|
return nodeShellExec(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat', [self.url, downloadsdir + '/' + self.installer]) |
|
|
|
return nodeShellExec(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat', [self.url, downloadsdir + '/' + self.installer] |
|
|
|
, { waitmsg : 'downloading node please wait' }) |
|
|
|
} |
|
|
|
else { |
|
|
|
console.log(self.installer + ' Already exits Download skipped.') |