|  |  | @@ -1,4 +1,3 @@ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var scripthostName = 'node' | 
		
	
		
			
			|  |  |  | var __Promise = {}; | 
		
	
		
			
			|  |  |  | var promises = []; | 
		
	
	
		
			
			|  |  | @@ -41,7 +40,12 @@ try { | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // -------------------------------------------- | 
		
	
		
			
			|  |  |  | // Node Exists. Lets launch ourselves in Node itself | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | WScript = function(){} | 
		
	
		
			
			|  |  |  | WScript.Echo = function(m){ | 
		
	
		
			
			|  |  |  | console.log('Invalid Wscript') | 
		
	
		
			
			|  |  |  | throw "Failed in Node Run." | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | var wait = function(ms, cb) {any | 
		
	
		
			
			|  |  |  | return new __Promise(function(resolve){ setTimeout(resolve, ms) } ).then(function(){ cb() }); | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
			|  |  | @@ -49,13 +53,15 @@ try { | 
		
	
		
			
			|  |  |  | var existsSync = require('fs').existsSync; | 
		
	
		
			
			|  |  |  | var existsSyncFolder = existsSync | 
		
	
		
			
			|  |  |  | var path = require('path'); | 
		
	
		
			
			|  |  |  | console.log('before cliverse') | 
		
	
		
			
			|  |  |  | var cli = require('./cliverse') | 
		
	
		
			
			|  |  |  | var nodeShellExec = cli.nodeShellExec; | 
		
	
		
			
			|  |  |  | console.log('before bbhverse') | 
		
	
		
			
			|  |  |  | var utils = require('bbhverse'); | 
		
	
		
			
			|  |  |  | var any = utils.any; | 
		
	
		
			
			|  |  |  | var wait = setTimeout | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var any = utils.any; | 
		
	
		
			
			|  |  |  | var wait = setTimeout | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // -------------------------------------------- | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
			|  |  | @@ -97,7 +103,55 @@ catch(e) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // cscript elxr/i.win.js /all:true | 
		
	
		
			
			|  |  |  | var all = WScript.Arguments.Named('all'); | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | trim = function(str) { return str.replace(/^\s+|\s+$/g, ''); }; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var fs = new ActiveXObject('Scripting.FileSystemObject'); | 
		
	
		
			
			|  |  |  | var WshShell = WScript.CreateObject("WScript.Shell") | 
		
	
		
			
			|  |  |  | var ENV = WshShell.Environment("Process") | 
		
	
		
			
			|  |  |  | var sfn = WScript.ScriptFullName | 
		
	
		
			
			|  |  |  | // WScript.Echo(sfn) | 
		
	
		
			
			|  |  |  | var cd = fs.GetAbsolutePathName(".") | 
		
	
		
			
			|  |  |  | var cfn = cd + '\\i.win.js' | 
		
	
		
			
			|  |  |  | // WScript.Echo(cfn) | 
		
	
		
			
			|  |  |  | var waslaunchedwithenv = trim(ENV.Item('LAUNCHEDWITHENV')); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // for(e=new Enumerator(ENV); !e.atEnd(); e.moveNext()) WScript.echo(e.item(e)); | 
		
	
		
			
			|  |  |  | if(waslaunchedwithenv !== "YES"){ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var a = fs.CreateTextFile("launchwithenv.bat", true) | 
		
	
		
			
			|  |  |  | a.WriteLine("@echo off") | 
		
	
		
			
			|  |  |  | a.WriteLine("echo %PATH%") | 
		
	
		
			
			|  |  |  | var gitpath = "C:\\Program Files\\Git\\cmd" | 
		
	
		
			
			|  |  |  | var nodepath = "C:\\Program Files\\nodejs\\" | 
		
	
		
			
			|  |  |  | var codepath = "C:\\Users\\Pradeep\\AppData\\Local\\Programs\\Microsoft VS Code\\bin" | 
		
	
		
			
			|  |  |  | a.WriteLine("set PATH=%PATH%;" + gitpath ) | 
		
	
		
			
			|  |  |  | a.WriteLine("set PATH=%PATH%;" + nodepath ) | 
		
	
		
			
			|  |  |  | a.WriteLine("set PATH=%PATH%;" + codepath ) | 
		
	
		
			
			|  |  |  | // a.WriteLine("set LAUNCHEDWITHENV=YES" ) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | var runningInExlr = function() { | 
		
	
		
			
			|  |  |  | var __ALIAS__STAMP__ = '9e7bebe0-1f57-11ec-8f88-778ffeea9d1b' | 
		
	
		
			
			|  |  |  | if(fs.FileExists('./' + __ALIAS__STAMP__)) return true | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | if(cfn === sfn && runningInExlr()) { | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | a.WriteLine("cd .."); | 
		
	
		
			
			|  |  |  | a.WriteLine("SET LAUNCHEDWITHENV=YES && cscript "+cfn+" /all:true") // PB : TODO -- Retain all script args... | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else { | 
		
	
		
			
			|  |  |  | a.WriteLine("SET LAUNCHEDWITHENV=YES && cscript "+sfn+" /all:true") | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // a.WriteLine("powershell.exe ^") | 
		
	
		
			
			|  |  |  | // a.WriteLine("[Environment]::GetEnvironmentVariable('Path')" ) | 
		
	
		
			
			|  |  |  | a.Close() | 
		
	
		
			
			|  |  |  | WshShell.run("cmd /k launchwithenv.bat") | 
		
	
		
			
			|  |  |  | WScript.Quit() | 
		
	
		
			
			|  |  |  | // WshShell.run("powershell -noexit [Environment]::GetEnvironmentVariable(\"\"Path\"\"\) ") | 
		
	
		
			
			|  |  |  | // WshShell.run("powershell -noexit [Environment]::SetEnvironmentVariable(\"\"Path\"\", $env:Path + \"\";C:\\tttt\"\", \"\"Machine\"\"\) ") | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | console = { | 
		
	
		
			
			|  |  |  | log : function(m) { WScript.Echo(m)} | 
		
	
		
			
			|  |  |  | , error : function(m) {WScript.Echo(m) } | 
		
	
	
		
			
			|  |  | @@ -328,9 +382,18 @@ catch(e) { | 
		
	
		
			
			|  |  |  | // promises.splice(0,1) | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | function batchshellescape(str) { | 
		
	
		
			
			|  |  |  | return str.replace('=', '^=') | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | function nodeShellExec(command, cargs, options){ | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | // for(var arg=0; arg < cargs.length; arg++) { | 
		
	
		
			
			|  |  |  | // 	// cargs[arg] = '"' + batchshellescape(cargs[arg]) +'"'; | 
		
	
		
			
			|  |  |  | //   cargs[arg] = '"' + cargs[arg] +'"'; | 
		
	
		
			
			|  |  |  | // } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var elevatedshellexecute = function(cmd, argstr){ | 
		
	
		
			
			|  |  |  | shell.ShellExecute(cmd, argstr , "", "", 1); | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
			|  |  | @@ -339,6 +402,7 @@ catch(e) { | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | var objShell = WScript.createobject("wscript.shell") | 
		
	
		
			
			|  |  |  | // console.log(argstr.join( ' ')) | 
		
	
		
			
			|  |  |  | console.log(cmd + ' ' + argstr.join(' ')) | 
		
	
		
			
			|  |  |  | var oExec = objShell.Exec(cmd + ' ' + argstr.join(' ')) | 
		
	
		
			
			|  |  |  | var result = {} | 
		
	
		
			
			|  |  |  | var shellresult = { shell : objShell, result : result } | 
		
	
	
		
			
			|  |  | @@ -473,7 +537,7 @@ catch(e) { | 
		
	
		
			
			|  |  |  | // } | 
		
	
		
			
			|  |  |  | // else { | 
		
	
		
			
			|  |  |  | // console.log('There is no runfile.') | 
		
	
		
			
			|  |  |  | // console.log(shellresult.strOutput) | 
		
	
		
			
			|  |  |  | console.log(shellresult.strOutput) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | wrapup(shellresult.result) | 
		
	
		
			
			|  |  |  | // } | 
		
	
	
		
			
			|  |  | @@ -793,8 +857,7 @@ function __main( selectedinstance ){ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var callsheltask = function(args) { | 
		
	
		
			
			|  |  |  | // console.log('callsheltask : ' + args) | 
		
	
		
			
			|  |  |  | return function() { | 
		
	
		
			
			|  |  |  | return nodeShellExec.apply(null, args) } } | 
		
	
		
			
			|  |  |  | return function() { return nodeShellExec.apply(null, args) } } | 
		
	
		
			
			|  |  |  | var gitUser = 'guest'; | 
		
	
		
			
			|  |  |  | var gitEmail = 'guest@bbh.org.in'; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
			|  |  | @@ -921,8 +984,6 @@ function __main( selectedinstance ){ | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | // var ENV = Object.assign({}, process.env); // Shallow clone it. | 
		
	
		
			
			|  |  |  | var WshShell = WScript.CreateObject("WScript.Shell") | 
		
	
		
			
			|  |  |  | var ENV = WshShell.Environment("Process") | 
		
	
		
			
			|  |  |  | // WScript.echo( ENV("Path") ) | 
		
	
		
			
			|  |  |  | function sysAddPathVar(path){ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
	
		
			
			|  |  | @@ -1194,8 +1255,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] | 
		
	
		
			
			|  |  |  | , { waitmsg : 'downloading node please wait' }) | 
		
	
		
			
			|  |  |  | return nodeShellExec(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat', ['"' + self.url + '"', downloadsdir + '/' + self.installer] | 
		
	
		
			
			|  |  |  | , { waitmsg : 'downloading '+ self.shellcmd +' please wait' }) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else { | 
		
	
		
			
			|  |  |  | console.log(self.installer + ' Already exits Download skipped.') | 
		
	
	
		
			
			|  |  | @@ -1209,15 +1270,35 @@ function __main( selectedinstance ){ | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , { | 
		
	
		
			
			|  |  |  | shellcmd: 'python2' | 
		
	
		
			
			|  |  |  | shellcmd: 'python' | 
		
	
		
			
			|  |  |  | , optional : true | 
		
	
		
			
			|  |  |  | , url: 'https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi' | 
		
	
		
			
			|  |  |  | , installer: 'python-2.7.18.amd64.msi' | 
		
	
		
			
			|  |  |  | , installcmd: ['MSIEXEC.exe', ['/i' | 
		
	
		
			
			|  |  |  | , path.normalize(downloadsdir + '/' + 'python-2.7.18.amd64.msi') | 
		
	
		
			
			|  |  |  | , 'ACCEPT=YES', '/passive']] | 
		
	
		
			
			|  |  |  | , preinstallsteps : function() { return Promise.resolve(true) } | 
		
	
		
			
			|  |  |  | , install : function() { | 
		
	
		
			
			|  |  |  | , preinstallsteps: function() { | 
		
	
		
			
			|  |  |  | var self = this; | 
		
	
		
			
			|  |  |  | console.log(self.shellcmd + ' preinstall steps') | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var steps = []; | 
		
	
		
			
			|  |  |  | steps.push( | 
		
	
		
			
			|  |  |  | function(){ | 
		
	
		
			
			|  |  |  | if (!existsSync(downloadsdir + '/' + self.installer)) { | 
		
	
		
			
			|  |  |  | return nodeShellExec(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat', [self.url, downloadsdir + '/' + self.installer] | 
		
	
		
			
			|  |  |  | , { waitmsg : 'downloading '+ self.shellcmd +' please wait' }) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else { | 
		
	
		
			
			|  |  |  | console.log(self.installer + ' Already exits Download skipped.') | 
		
	
		
			
			|  |  |  | return Promise.resolve(true) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | return any(steps) | 
		
	
		
			
			|  |  |  | // return any([any(steps), any(prompts)]) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , install : function() { | 
		
	
		
			
			|  |  |  | var self = this; | 
		
	
		
			
			|  |  |  | var ifns = [self.installcmd] | 
		
	
		
			
			|  |  |  | if(!ifns.map) ifns.map = map; | 
		
	
	
		
			
			|  |  | @@ -1239,12 +1320,31 @@ function __main( selectedinstance ){ | 
		
	
		
			
			|  |  |  | , optional : true | 
		
	
		
			
			|  |  |  | , url: 'https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user' | 
		
	
		
			
			|  |  |  | , installer: 'VSCodeUserSetup-x64-1.65.2.exe' | 
		
	
		
			
			|  |  |  | , installcmd: ['cmd', ['/c', 'start', | 
		
	
		
			
			|  |  |  | '/WAIT', downloadsdir + '/' + 'VSCodeUserSetup-x64-1.65.2.exe' | 
		
	
		
			
			|  |  |  | , '/VERYSILENT' | 
		
	
		
			
			|  |  |  | , installcmd: ['cmd /c', ['start /WAIT ' + downloadsdir + '/' + 'VSCodeUserSetup-x64-1.65.2.exe /VERYSILENT' | 
		
	
		
			
			|  |  |  | // , '/MERGETASKS=!runcode' // This is required only for vscode... | 
		
	
		
			
			|  |  |  | ]] | 
		
	
		
			
			|  |  |  | , preinstallsteps : function() { return Promise.resolve(true) } | 
		
	
		
			
			|  |  |  | , preinstallsteps: function() { | 
		
	
		
			
			|  |  |  | var self = this; | 
		
	
		
			
			|  |  |  | console.log(self.shellcmd + ' preinstall steps') | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | var steps = []; | 
		
	
		
			
			|  |  |  | steps.push( | 
		
	
		
			
			|  |  |  | function(){ | 
		
	
		
			
			|  |  |  | if (!existsSync(downloadsdir + '/' + self.installer)) { | 
		
	
		
			
			|  |  |  | console.log(self.url) | 
		
	
		
			
			|  |  |  | return nodeShellExec(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat', ['"' + self.url + '"', downloadsdir + '/' + self.installer] | 
		
	
		
			
			|  |  |  | , { waitmsg : 'downloading '+ self.shellcmd +' please wait' }) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else { | 
		
	
		
			
			|  |  |  | console.log(self.installer + ' Already exits Download skipped.') | 
		
	
		
			
			|  |  |  | return Promise.resolve(true) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  |  | 
		
	
		
			
			|  |  |  | return any(steps) | 
		
	
		
			
			|  |  |  | // return any([any(steps), any(prompts)]) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | , install : function() { | 
		
	
		
			
			|  |  |  | var self = this; | 
		
	
		
			
			|  |  |  | var ifns = [self.installcmd] | 
		
	
	
		
			
			|  |  | @@ -1264,11 +1364,12 @@ function __main( selectedinstance ){ | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | ,  { | 
		
	
		
			
			|  |  |  | shellcmd: 'mysql', | 
		
	
		
			
			|  |  |  | url: 'https://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-8.0.29.0.msi' | 
		
	
		
			
			|  |  |  | , installer: 'mysql-installer-community-8.0.29.0.msi' | 
		
	
		
			
			|  |  |  | url: 'https://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-8.0.30.0.msi' //'https://dev.mysql.com/get/Downloads/MySQLInstaller/mysql-installer-community-8.0.29.0.msi' | 
		
	
		
			
			|  |  |  | , installer: 'mysql-installer-community-8.0.30.0.msi' | 
		
	
		
			
			|  |  |  | , installcmd: ['MSIEXEC.exe', ['/i' | 
		
	
		
			
			|  |  |  | , path.normalize(downloadsdir + '/' + 'mysql-installer-community-8.0.29.0.msi') | 
		
	
		
			
			|  |  |  | , 'ACCEPT=YES', '/passive']] | 
		
	
		
			
			|  |  |  | , path.normalize(downloadsdir + '/' + 'mysql-installer-community-8.0.30.0.msi') | 
		
	
		
			
			|  |  |  | //, 'ACCEPT=YES', '/passive' | 
		
	
		
			
			|  |  |  | ]] | 
		
	
		
			
			|  |  |  | , install : function() { | 
		
	
		
			
			|  |  |  | var self = this; | 
		
	
		
			
			|  |  |  | var ifns = [self.installcmd] | 
		
	
	
		
			
			|  |  | @@ -1290,8 +1391,9 @@ function __main( selectedinstance ){ | 
		
	
		
			
			|  |  |  | steps.push( | 
		
	
		
			
			|  |  |  | function(){ | 
		
	
		
			
			|  |  |  | if (!existsSync(downloadsdir + '/' + self.installer)) { | 
		
	
		
			
			|  |  |  | console.log(self.url) | 
		
	
		
			
			|  |  |  | return nodeShellExec(selectedinstance.root + '/.elxr/run-' + runtimestamp + '/download.bat', [self.url, downloadsdir + '/' + self.installer] | 
		
	
		
			
			|  |  |  | , { waitmsg : 'downloading mysql please wait' }) | 
		
	
		
			
			|  |  |  | , { waitmsg : 'downloading '+ self.shellcmd +' please wait' }) | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else { | 
		
	
		
			
			|  |  |  | console.log(self.installer + ' Already exits Download skipped.') | 
		
	
	
		
			
			|  |  | @@ -1322,7 +1424,9 @@ function __main( selectedinstance ){ | 
		
	
		
			
			|  |  |  | console.log('Elxr Installsteps called') | 
		
	
		
			
			|  |  |  | var installIfNotExists = function(){ | 
		
	
		
			
			|  |  |  | console.log('Elxr PreInstallsteps called') | 
		
	
		
			
			|  |  |  | var ifns = [ ['git', ['clone', 'http://git.bbh/chess/elxr'] ] ] | 
		
	
		
			
			|  |  |  | var ifns = [ | 
		
	
		
			
			|  |  |  | ['git', ['clone', 'http://git.bbh.org.in/chess/elxr'] ] | 
		
	
		
			
			|  |  |  | ] | 
		
	
		
			
			|  |  |  | if(existsSyncFolder( selectedinstance.root + '\\elxr')) { | 
		
	
		
			
			|  |  |  | if(existsSyncFolder( selectedinstance.root + '\\elxr\\.git')) { | 
		
	
		
			
			|  |  |  | // PB : TODO -- use a elxr guid signature to detect more reliably folders named the same that is not us. | 
		
	
	
		
			
			|  |  | @@ -1333,6 +1437,7 @@ function __main( selectedinstance ){ | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | else console.log(selectedinstance.root + '\\elxr' + ' NOT FOUND ') | 
		
	
		
			
			|  |  |  | ifns.push(['npm', ['i'], { cwd : '.\\elxr' } ]) | 
		
	
		
			
			|  |  |  | if(!ifns.map) ifns.map = map; | 
		
	
		
			
			|  |  |  | return any(ifns.map(callsheltask))['catch'](function(e){ | 
		
	
		
			
			|  |  |  | if(e.code === 1602) { |