|
|
|
|
|
|
|
|
// elxr |
|
|
// elxr |
|
|
// A cli tool for elixr. |
|
|
// A cli tool for elixr. |
|
|
const { existsSync } = require('fs'); |
|
|
const { existsSync } = require('fs'); |
|
|
|
|
|
const fs = require('fs') |
|
|
const { spawn, spawnSync } = require('child_process'); |
|
|
const { spawn, spawnSync } = require('child_process'); |
|
|
const cliargs = require('../elxr/cliargs'); // Use minimist... |
|
|
const cliargs = require('../elxr/cliargs'); // Use minimist... |
|
|
const processedArgs = cliargs(process.argv.slice(2)); |
|
|
const processedArgs = cliargs(process.argv.slice(2)); |
|
|
|
|
|
|
|
|
, 'clientverse' |
|
|
, 'clientverse' |
|
|
, 'serververse' |
|
|
, 'serververse' |
|
|
, 'client' |
|
|
, 'client' |
|
|
|
|
|
// , 'client/server' |
|
|
, 'elxr' |
|
|
, 'elxr' |
|
|
, 'elixir-client' |
|
|
, 'elixir-client' |
|
|
, 'elixir-client-unlinked' |
|
|
, 'elixir-client-unlinked' |
|
|
, 'ember-searchable-select' |
|
|
, 'ember-searchable-select' |
|
|
, 'loopback-component-jsonapi' |
|
|
, 'loopback-component-jsonapi' |
|
|
, 'config' |
|
|
|
|
|
|
|
|
, 'elixir-config' |
|
|
|
|
|
, 'cihsr-config' |
|
|
|
|
|
, 'cihsr-data' |
|
|
|
|
|
, 'elixir-data' |
|
|
, 'loopback-connector-ds' |
|
|
, 'loopback-connector-ds' |
|
|
, 'chess-server-lib' |
|
|
, 'chess-server-lib' |
|
|
, 'elixir-server' |
|
|
|
|
|
, 'chess-server' |
|
|
|
|
|
, 'setup' |
|
|
, 'setup' |
|
|
] |
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
// Repositiories that have symlinks that required elevated priviletes in windows to create symlinks |
|
|
|
|
|
// |
|
|
|
|
|
var elevatedRunasRepos = [ |
|
|
|
|
|
'elixir-server' |
|
|
|
|
|
, 'cihsr-server' |
|
|
|
|
|
, 'chess-server' |
|
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var env = Object.assign({}, process.env); // Shallow clone it. |
|
|
var env = Object.assign({}, process.env); // Shallow clone it. |
|
|
var __runcmd = function(label){ |
|
|
var __runcmd = function(label){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// env: env |
|
|
// env: env |
|
|
// }) |
|
|
// }) |
|
|
|
|
|
|
|
|
|
|
|
var performPull = repo => { |
|
|
|
|
|
if(existsSync(repo)) { |
|
|
|
|
|
console.log('pulling ' + repo) |
|
|
|
|
|
nodeShellExec('git', ['pull'], { |
|
|
|
|
|
inherit : true, shell: true, |
|
|
|
|
|
cwd : repo |
|
|
|
|
|
// , env: process.env |
|
|
|
|
|
, title : `git pull ${repo}` |
|
|
|
|
|
}).catch((e)=>{ console.error(e) }) |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
console.log('cloning ' + repo) |
|
|
|
|
|
nodeShellExec('git', ['clone', '//172.16.0.27/repos/' + repo + '.git'], |
|
|
|
|
|
{ |
|
|
|
|
|
inherit : true, shell: true, |
|
|
|
|
|
env: process.env |
|
|
|
|
|
, title : `git clone ${'//172.16.0.27/repos/' + repo + '.git'}` |
|
|
|
|
|
}).catch((e)=>{ console.error(e) }) |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
var isElevated; |
|
|
var isElevated; |
|
|
try { |
|
|
try { |
|
|
nodeShellExec( "fsutil", ["dirty", "query", "C:"], { |
|
|
nodeShellExec( "fsutil", ["dirty", "query", "C:"], { |
|
|
|
|
|
|
|
|
, title : `check privileged execution mode using fsutil dirty query C:` |
|
|
, title : `check privileged execution mode using fsutil dirty query C:` |
|
|
}).then((exitcode)=>{ |
|
|
}).then((exitcode)=>{ |
|
|
console.log('Elevated') |
|
|
console.log('Elevated') |
|
|
|
|
|
var isElevated = true; |
|
|
|
|
|
console.dir(processedArgs._[1]) |
|
|
|
|
|
if(processedArgs._[1] === 'runas') elevatedRunasRepos.forEach(performPull); |
|
|
|
|
|
else gitRepos.forEach(performPull); |
|
|
}).catch(()=>{ |
|
|
}).catch(()=>{ |
|
|
console.log('Not Elevated') |
|
|
|
|
|
|
|
|
console.log('Not Elevated'); |
|
|
|
|
|
gitRepos.forEach(performPull) |
|
|
console.log('Requesting Elevated Privileges') |
|
|
console.log('Requesting Elevated Privileges') |
|
|
nodeShellExec('MSHTA', ["javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('node', 'elxr pull', '', 'runas', 1);close();"] |
|
|
|
|
|
|
|
|
nodeShellExec('MSHTA', ["javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('node', 'elxr pull runas', '', 'runas', 1);close();"] |
|
|
, { |
|
|
, { |
|
|
inherit : true |
|
|
|
|
|
|
|
|
// inherit : true |
|
|
// , shell: true |
|
|
// , shell: true |
|
|
, env: process.env |
|
|
|
|
|
, |
|
|
|
|
|
title : `runsAs` |
|
|
|
|
|
|
|
|
env: process.env |
|
|
|
|
|
, title : `runas` |
|
|
} |
|
|
} |
|
|
); |
|
|
); |
|
|
}); |
|
|
}); |
|
|
// isElevated = true; |
|
|
// isElevated = true; |
|
|
} |
|
|
} |
|
|
catch ( e ) { |
|
|
catch ( e ) { |
|
|
// isElevated = false; |
|
|
|
|
|
|
|
|
console.error(e) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// nodeShellExec('MSHTA', ["javascript: var shell = new ActiveXObject('shell.application'); shell.ShellExecute('node', 'elxr pull', '', 'runas', 1);close();"]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
gitRepos.forEach(repo => { |
|
|
|
|
|
if(existsSync(repo)) { |
|
|
|
|
|
console.log('pulling ' + repo) |
|
|
|
|
|
nodeShellExec('git', ['pull'], { |
|
|
|
|
|
inherit : true, shell: true, |
|
|
|
|
|
cwd : repo |
|
|
|
|
|
, env: process.env |
|
|
|
|
|
, title : `git pull ${repo}` |
|
|
|
|
|
}).catch((e)=>{ console.error(e) }) |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
console.log('cloning ' + repo) |
|
|
|
|
|
nodeShellExec('git', ['clone', '//172.16.0.27/repos/' + repo + '.git'], |
|
|
|
|
|
{ |
|
|
|
|
|
inherit : true, shell: true, |
|
|
|
|
|
cwd : repo |
|
|
|
|
|
, env: process.env |
|
|
|
|
|
, title : `git clone ${'//172.16.0.27/repos/' + repo + '.git'}` |
|
|
|
|
|
}).catch((e)=>{ console.error(e) }) |
|
|
|
|
|
} |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
} |
|
|
, 'npmi' : ()=>{ |
|
|
, 'npmi' : ()=>{ |
|
|
var tasks = []; |
|
|
var tasks = []; |
|
|
|
|
|
|
|
|
env.DEBUG = 'loopback:connector:' + dbForLabel(label) |
|
|
env.DEBUG = 'loopback:connector:' + dbForLabel(label) |
|
|
|
|
|
|
|
|
nodeShellExec('node', ['--inspect=9228', 'elixir/server.js'], { |
|
|
nodeShellExec('node', ['--inspect=9228', 'elixir/server.js'], { |
|
|
inherit : true, |
|
|
|
|
|
|
|
|
// inherit : true, |
|
|
shell: true, detached: true, |
|
|
shell: true, detached: true, |
|
|
cwd : 'elixir-server', |
|
|
cwd : 'elixir-server', |
|
|
env: env |
|
|
env: env |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
nodeShellExec('node', ['--inspect=9227', 'elixr/server.js'], { |
|
|
|
|
|
inherit : true, |
|
|
|
|
|
shell: true, detached: true, |
|
|
|
|
|
cwd : 'elixir-server', |
|
|
|
|
|
env: env |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
// nodeShellExec('node', ['--inspect=9226', ' bin/www'], { |
|
|
// nodeShellExec('node', ['--inspect=9226', ' bin/www'], { |
|
|
// inherit : true, |
|
|
// inherit : true, |
|
|
// shell: true, detached: true, |
|
|
// shell: true, detached: true, |
|
|
|
|
|
|
|
|
// }) |
|
|
// }) |
|
|
|
|
|
|
|
|
nodeShellExec('ember', ['s'], { |
|
|
nodeShellExec('ember', ['s'], { |
|
|
inherit : true, |
|
|
|
|
|
|
|
|
// inherit : true, |
|
|
shell: true, detached: true, |
|
|
shell: true, detached: true, |
|
|
cwd : 'client/', |
|
|
cwd : 'client/', |
|
|
env: env |
|
|
env: env |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
|
|
|
, 'use' : ()=>{ |
|
|
|
|
|
try { |
|
|
|
|
|
var runconfig = require('./run.js') |
|
|
|
|
|
if(processedArgs._[1] && runconfig.use === processedArgs._[1]) { |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
else runconfig.use = processedArgs._[1]; |
|
|
|
|
|
fs.writeFileSync('./run.js', 'module.exports = ' + JSON.stringify(runconfig)) |
|
|
|
|
|
} |
|
|
|
|
|
catch(e) { |
|
|
|
|
|
runconfig = { use : processedArgs._[1] }; |
|
|
|
|
|
fs.writeFileSync('./run.js', 'module.exports = ' + JSON.stringify(runconfig)) |
|
|
|
|
|
} |
|
|
|
|
|
var tasks = [ |
|
|
|
|
|
()=>{ |
|
|
|
|
|
var p = nodeShellExec('mklink', ['/D', 'data', 'data-' + runconfig.use], { |
|
|
|
|
|
inherit : true, shell: true |
|
|
|
|
|
, env: process.env |
|
|
|
|
|
}).catch((e)=>{ console.error(e) }) |
|
|
|
|
|
return p; |
|
|
|
|
|
}, |
|
|
|
|
|
()=>{ |
|
|
|
|
|
var p = nodeShellExec('mklink', ['/D', 'config', 'config-' + runconfig.use], { |
|
|
|
|
|
inherit : true, shell: true |
|
|
|
|
|
, env: process.env |
|
|
|
|
|
}).catch((e)=>{ console.error(e) }) |
|
|
|
|
|
return p; |
|
|
|
|
|
} |
|
|
|
|
|
] |
|
|
|
|
|
any(tasks) |
|
|
|
|
|
|
|
|
|
|
|
// Antibiotic stewardship program. |
|
|
|
|
|
// 1st use is fine. |
|
|
|
|
|
// Max vials dispense |
|
|
|
|
|
// 2nd use Pharmacy needs justification Form. |
|
|
|
|
|
// Approval after a certain period of time. |
|
|
|
|
|
} |
|
|
, 'g' : ()=>{ |
|
|
, 'g' : ()=>{ |
|
|
if(processedArgs.h) { |
|
|
if(processedArgs.h) { |
|
|
|
|
|
|