Browse Source

variious changes

master
pb 2 years ago
parent
commit
64b96cf455
2 changed files with 84 additions and 172 deletions
  1. 82
    170
      i.win.js
  2. 2
    2
      win_verse.js

+ 82
- 170
i.win.js View File

a.WriteLine("set PATH=%PATH%;" + codepath ) a.WriteLine("set PATH=%PATH%;" + codepath )
// a.WriteLine("set LAUNCHEDWITHENV=YES" ) // a.WriteLine("set LAUNCHEDWITHENV=YES" )
var __ALIAS__STAMP__ = '9e7bebe0-1f57-11ec-8f88-778ffeea9d1b'
var currentIsExlr = function() {
var runningInExlr = function() {
var __ALIAS__STAMP__ = '9e7bebe0-1f57-11ec-8f88-778ffeea9d1b'
if(fs.FileExists('./' + __ALIAS__STAMP__)) return true if(fs.FileExists('./' + __ALIAS__STAMP__)) return true
} }
var runningInExlr = currentIsExlr()
if(cfn === sfn && runningInExlr) {
a.WriteLine("cd ..");
a.WriteLine("SET LAUNCHEDWITHENV=YES && cscript "+cfn+" /all:true") // PB : TODO -- Retain all script args...
if(cfn === sfn && runningInExlr()) {
a.WriteLine("cd ..");
a.WriteLine("SET LAUNCHEDWITHENV=YES && cscript "+cfn+" /all:true") // PB : TODO -- Retain all script args...
} }
else { else {
var guesselxr = fs.FileExists(cd + './elxr/' + __ALIAS__STAMP__)
if(guesselxr) {
a.WriteLine("SET LAUNCHEDWITHENV=YES && cscript "+cd + './elxr/' + 'i.win.js' +" /all:true")
}
else a.WriteLine("SET LAUNCHEDWITHENV=YES && cscript "+sfn+" /all:true")
a.WriteLine("SET LAUNCHEDWITHENV=YES && cscript "+sfn+" /all:true")
} }
// a.WriteLine("powershell.exe ^") // a.WriteLine("powershell.exe ^")


var callsheltask = function(args) { var callsheltask = function(args) {
// console.log('callsheltask : ' + args) // console.log('callsheltask : ' + args)
return function() { return nodeShellExec.apply(null, args) } }
return function() {
return nodeShellExec.apply(null, args) } }
var gitUser = 'guest'; var gitUser = 'guest';
var gitEmail = 'guest@bbh.org.in'; var gitEmail = 'guest@bbh.org.in';


WScript.Echo(all) WScript.Echo(all)
if(!all && preq.optional) return if(!all && preq.optional) return
var p = preq.exists().then(function(exists) { var p = preq.exists().then(function(exists) {
if (exists && !preq.forceinstall) console.log( preq.shellcmd + ' exists');
if (exists) console.log( preq.shellcmd + ' exists');
else { else {
console.log(exists) console.log(exists)
console.log(preq.shellcmd + ' is not installed'); console.log(preq.shellcmd + ' is not installed');
}) })
} }


function install() {
var self = this;
var ifns = [self.installcmd]
if(!ifns.map) ifns.map = map;
console.log('Installing')
return any(ifns.map(callsheltask))['catch'](function(e){
if(e.code === 1602) {
console.warn("Installation was probably cancelled.")
}
else throw e
}).then(function(){
return self.postinstallsteps && self.postinstallsteps()
})
}

function unique(arr) { function unique(arr) {
var hash = {}, result = []; var hash = {}, result = [];
for ( var i = 0, l = arr.length; i < l; ++i ) { for ( var i = 0, l = arr.length; i < l; ++i ) {
, installcmd: ['MSIEXEC.exe', ['/i' , installcmd: ['MSIEXEC.exe', ['/i'
, path.normalize(downloadsdir + '/' + 'node-v14.17.3-x64.msi') , path.normalize(downloadsdir + '/' + 'node-v14.17.3-x64.msi')
, 'ACCEPT=YES', '/passive']] , 'ACCEPT=YES', '/passive']]
, install : install
, install : function() {
var self = this;
var ifns = [self.installcmd]
if(!ifns.map) ifns.map = map;
return any(ifns.map(callsheltask))['catch'](function(e){
if(e.code === 1602) {
console.warn("Installation was probably cancelled.")
}
else throw e
})
}
, exists : exists , exists : exists
, preinstallsteps: function() { , preinstallsteps: function() {
var self = this; var self = this;
return any(steps) return any(steps)
// return any([any(steps), any(prompts)]) // return any([any(steps), any(prompts)])
} }
, install : install
, postinstallsteps : function() { return sysAddPathVar('%USERPROFILE%\\AppData/Local\\Microsoft\\WindowsApps') }
, exists : exists
, install : function() {
var self = this;
var ifns = [self.installcmd]
if(!ifns.map) ifns.map = map;
console.log('Installing')
return any(ifns.map(callsheltask))['catch'](function(e){
if(e.code === 1602) {
console.warn("Installation was probably cancelled.")
}
else throw e
}).then(function(){
return self.postinstallsteps()
})
}
, postinstallsteps : function() { return sysAddPathVar('%USERPROFILE%\\AppData/Local\\Microsoft\\WindowsApps') }
, exists : exists
} }
, { , {
shellcmd: 'code' shellcmd: 'code'
return any(steps) return any(steps)
// return any([any(steps), any(prompts)]) // return any([any(steps), any(prompts)])
} }
, install : install
, postinstallsteps : function() { return sysAddPathVar('%USERPROFILE%\\AppData/Local\\Microsoft\\WindowsApps') }
, exists : exists
}
, {
shellcmd: 'sqlexpress',
url: 'https://go.microsoft.com/fwlink/?linkid=866658'
, installer: 'SQL2019-SSEI-Expr.exe'
, installcmd: ['cmd', ['/c', 'start',
'/WAIT', downloadsdir + '/' + 'SQL2019-SSEI-Expr.exe'
, '/Quiet'
//, 'SSMSInstallRoot=%systemdrive%\\Program Files (x86)\\Microsoft SQL Server\\140\\Tools\\Binn\\ManagementStudio'
]]
, install : install
, exists : exists
, preinstallsteps: function() {
var self = this;
console.log('Node 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)])
}
}
, {
shellcmd: 'Ssms2019.exe',
url: 'https://aka.ms/ssmsfullsetup'
, installer: 'SSMS-Setup-ENU.exe'
, installcmd: ['cmd', ['/c', 'start',
'/WAIT', downloadsdir + '/' + 'SSMS-Setup-ENU.exe'
, '/Quiet'
//, 'SSMSInstallRoot=%systemdrive%\\Program Files (x86)\\Microsoft SQL Server\\140\\Tools\\Binn\\ManagementStudio'
]]
, install : install
, exists : exists
, preinstallsteps: function() {
var self = this;
console.log('smss 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)
}
, install : function() {
var self = this;
var ifns = [self.installcmd]
if(!ifns.map) ifns.map = map;
console.log('Installing')
return any(ifns.map(callsheltask))['catch'](function(e){
if(e.code === 1602) {
console.warn("Installation was probably cancelled.")
} }
)
return any(steps)
// return any([any(steps), any(prompts)])
else throw e
}).then(function(){
return self.postinstallsteps()
})
} }
}
, {
shellcmd: 'Ssms.exe',
url: 'https://go.microsoft.com/fwlink/?linkid=2043154&clcid=0x409'
, installer: 'SSMS-Setup-ENU.exe'
, installcmd: ['cmd', ['/c', 'start',
'/WAIT', downloadsdir + '/' + 'SSMS-Setup-ENU.exe'
, '/Quiet'
//, 'SSMSInstallRoot=%systemdrive%\\Program Files (x86)\\Microsoft SQL Server\\140\\Tools\\Binn\\ManagementStudio'
]]
, install : install
, postinstallsteps : function() { return sysAddPathVar('%USERPROFILE%\\AppData/Local\\Microsoft\\WindowsApps') }
, exists : exists , exists : exists
, preinstallsteps: function() {
var self = this;
console.log('smss 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)])
}
} }
, { , {
shellcmd: 'mysql', shellcmd: 'mysql',
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' 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' , installer: 'mysql-installer-community-8.0.30.0.msi'
, installcmd: ['MSIEXEC.exe', ['/i' , installcmd: ['MSIEXEC.exe', ['/i'
, path.normalize(downloadsdir + '/' + 'mysql-installer-community-8.0.30.0.msi')
, path.normalize(downloadsdir + '/' + 'mysql-installer-community-8.0.30.0.msi')
//, 'ACCEPT=YES', '/passive' //, 'ACCEPT=YES', '/passive'
]]
, install : install
]]
, install : function() {
var self = this;
var ifns = [self.installcmd]
if(!ifns.map) ifns.map = map;
return any(ifns.map(callsheltask))['catch'](function(e){
if(e.code === 1602) {
console.warn("Installation was probably cancelled.")
}
else throw e
})
}
, exists : exists , exists : exists
, preinstallsteps: function() { , preinstallsteps: function() {
var self = this; var self = this;
} }
, { , {
shellcmd: 'elxr' shellcmd: 'elxr'
, forceinstall : true
, installcmd: [ isWin() ? 'npm.cmd' : 'npm' , ['link'], { cwd : selectedinstance.root + '\\elxr' /* cwd should be the cloned dir*/}] , installcmd: [ isWin() ? 'npm.cmd' : 'npm' , ['link'], { cwd : selectedinstance.root + '\\elxr' /* cwd should be the cloned dir*/}]
, preinstallsteps: function() { , preinstallsteps: function() {
var self = this; var self = this;
console.log('Elxr Installsteps called') console.log('Elxr Installsteps called')
var installIfNotExists = function(){ var installIfNotExists = function(){
console.log('Elxr PreInstallsteps called') console.log('Elxr PreInstallsteps called')
var steps = [];
var chessRepo = 'https://git.bbh.org.in'
steps.push(
function(){
// console.log('cli prompt steps')
var choices = { 0 : 'http://git.bbh', 1 : 'https://git.bbh.org.in' }
return cli.prompt(choices, 'git repository : ', chessRepo).then(function(choice){ chessRepo = choice } )
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.
ifns = [ ['git', ['pull'], { cwd : selectedinstance.root + '\\elxr' } ] ]
} }
)
return any(steps).then(function(){
var ifns = [

['git', ['clone', chessRepo + '/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.
ifns = [ ['git', ['pull'], { cwd : selectedinstance.root + '\\elxr' } ] ]
}
else {
throw 'elxr subfolder not recognized as a git repository. Please cleanup and continue.'
}
else {
throw 'elxr subfolder not recognized as a git repository. Please cleanup and continue.'
} }
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) {
console.warn("Installation was probably cancelled.")
}
else throw e
})
}
else console.log(selectedinstance.root + '\\elxr' + ' NOT FOUND ')
if(!ifns.map) ifns.map = map;
return any(ifns.map(callsheltask))['catch'](function(e){
if(e.code === 1602) {
console.warn("Installation was probably cancelled.")
}
else throw e
}) })
} }
var ifns = [ self.installcmd ] var ifns = [ self.installcmd ]
, install: function () { , install: function () {
var self = this; var self = this;
console.log('Elxr Install called') console.log('Elxr Install called')
return any([ self.preinstallsteps, function(){ return self.installsteps() }
, nodeShellExec('start', ['""', '"C:\\Program Files\\Git\\bin\\sh.exe"', '-c', '"node ' + (selectedinstance.root + '\\elxr\\index.js').replace(/\\/g, '/') + ' i elixir"'])
return any([ /*self.preinstallsteps,*/ function(){ return self.installsteps() }
, nodeShellExec('node', [selectedinstance.root + '\\elxr\\index.js', 'init'])
// , nodeShellExec('node', [selectedinstance.root + 'elxr\\index.js']) // , nodeShellExec('node', [selectedinstance.root + 'elxr\\index.js'])
]) ])
} }

+ 2
- 2
win_verse.js View File

var __runasresult = null; var __runasresult = null;
return taskToRun().then((r)=>{ return taskToRun().then((r)=>{
// PB : TODO -- Every elevation should have its own messaging file. Async writes from multiple processes are a problem here... // PB : TODO -- Every elevation should have its own messaging file. Async writes from multiple processes are a problem here...
elevatedRunIPCWriteMessage( runlogjson, { info : taskToRun.info, success: true } )
elevatedRunIPCWriteMessage( runlogjson, ', ' + JSON.stringify( { info : taskToRun.info, success: true }) )
if(!inBatch) fs.writeFileSync('run.done', 'success') // PB : TODO -- This should be done conditionally if we are running inproc. if(!inBatch) fs.writeFileSync('run.done', 'success') // PB : TODO -- This should be done conditionally if we are running inproc.
return __runasresult = r; return __runasresult = r;
}) })
.catch((e) => { .catch((e) => {
elevatedRunIPCWriteMessage( runlogjson, e )
elevatedRunIPCWriteMessage( runlogjson, ', ' + JSON.stringify(e ) )
if(!inBatch)fs.writeFileSync('run.done', 'failure') if(!inBatch)fs.writeFileSync('run.done', 'failure')
console.error(e) console.error(e)
}) })

Loading…
Cancel
Save