8e32e294b7
-All shell scripts have been removed and replaced with javascript equivalents which allows for better platform independence -All scripts have been improved over the older shell scripts to be more functional and dynamic -Updated all applicable cmds in the package.json to target the new js scripts + added the backup, restore and delete database functions to the list -Removed the json and strip-json-comments-cli packages as they are no longer needed -Added a new package realine-sync -Updated cluster code with better Windows support when shutting down the explorer -Backup and Restore scripts now use mongo's own encryption instead of tar.gz by default. Older tar.gz backups can still be restored as long as the tar.gz suffix is explicitly added -Backup and Restore scripts now support connecting to remote database based on the mongo details in settings.json -Updated README to include a new line for the 'platform independence' feature, updated script cmds and notes about certain steps being Linux only
108 lines
4.0 KiB
JavaScript
108 lines
4.0 KiB
JavaScript
const minNodeVersionMajor = '14';
|
|
const minNodeVersionMinor = '13';
|
|
const minNodeVersionRevision = '1';
|
|
|
|
// get the nodejs version
|
|
var nodeVersion = process.version;
|
|
var nodeVersionMajor = '0';
|
|
var nodeVersionMinor = '0';
|
|
var nodeVersionRevision = '0';
|
|
|
|
// check if the nodejs version # is blank or a very long string as that would usually indicate a problem
|
|
if (nodeVersion != null && nodeVersion != '' && nodeVersion.length < 16) {
|
|
// Remove the 'v' from the beginning of the version string
|
|
if (nodeVersion.indexOf('v') == 0)
|
|
nodeVersion = nodeVersion.slice(1);
|
|
|
|
// split node version string into major, minor and revision
|
|
var splitVersion = nodeVersion.split('.');
|
|
|
|
nodeVersionMajor = splitVersion[0];
|
|
|
|
if (splitVersion.length > 1)
|
|
nodeVersionMinor = splitVersion[1];
|
|
|
|
if (splitVersion.length > 2)
|
|
nodeVersionRevision = splitVersion[2];
|
|
}
|
|
|
|
// check if the installed nodejs is an older version than supported by the explorer
|
|
if (!(nodeVersionMajor > minNodeVersionMajor || (nodeVersionMajor == minNodeVersionMajor && (nodeVersionMinor > minNodeVersionMinor || (nodeVersionMinor == minNodeVersionMinor && nodeVersionRevision >= minNodeVersionRevision))))) {
|
|
console.log(`Please install an updated version of nodejs.\n\nInstalled: ${nodeVersion}\nRequired: ${minNodeVersionMajor}.${minNodeVersionMinor}.${minNodeVersionRevision}`);
|
|
process.exit(0);
|
|
}
|
|
|
|
function check_argument_passed(cb) {
|
|
// check 1st argument
|
|
if (process.argv[2] != null) {
|
|
const { exec } = require('child_process');
|
|
|
|
// determine which argument was passed
|
|
switch (process.argv[2]) {
|
|
case 'pm2':
|
|
// windows pm2 has problem loading locally, but other os's should work fine
|
|
const isWinOS = process.platform == 'win32';
|
|
|
|
// run a cmd to check if pm2 is installed
|
|
exec(`npm list${(isWinOS ? ' -g' : '')} pm2`, (err, stdout, stderr) => {
|
|
// split stdout string by new line
|
|
var splitResponse = (stdout == null ? '' : stdout).split('\n').filter(element => element);
|
|
|
|
// check if the cmd result contains an @ symbol
|
|
if (splitResponse[splitResponse.length - 1].indexOf('@') == -1) {
|
|
console.log('Installing pm2 module.. Please wait..');
|
|
|
|
// install pm2
|
|
exec(`npm install pm2@latest${(isWinOS ? ' -g' : '')}`, (err, stdout, stderr) => {
|
|
// always return true for now without checking results
|
|
return cb(true);
|
|
});
|
|
} else
|
|
return cb(true);
|
|
});
|
|
break;
|
|
case 'forever':
|
|
// run a cmd to check if forever is installed
|
|
exec('npm list forever', (err, stdout, stderr) => {
|
|
// split stdout string by new line
|
|
var splitResponse = (stdout == null ? '' : stdout).split('\n').filter(element => element);
|
|
|
|
// check if the cmd result contains an @ symbol
|
|
if (splitResponse[splitResponse.length - 1].indexOf('@') == -1) {
|
|
console.log('Installing forever module.. Please wait..');
|
|
|
|
// install forever
|
|
exec('npm install forever', (err, stdout, stderr) => {
|
|
// always return true for now without checking results
|
|
return cb(true);
|
|
});
|
|
} else
|
|
return cb(true);
|
|
});
|
|
break;
|
|
default:
|
|
// argument not passed or unknown argument
|
|
return cb(true);
|
|
}
|
|
} else
|
|
return cb(true);
|
|
}
|
|
|
|
// check if an argument was passed into this script
|
|
check_argument_passed(function(retVal) {
|
|
const fs = require('fs');
|
|
const settings = require('../lib/settings');
|
|
|
|
// ensure the selected theme is properly installed
|
|
fs.writeFile('./public/css/_theme-selector.scss', `$theme-name: "${settings.shared_pages.theme}";`, function (err) {
|
|
const sass = require('sass');
|
|
|
|
// generate minified css from scss file
|
|
const minified = sass.compile('./public/css/style.scss', {style: 'compressed'});
|
|
|
|
// save the minified css to file
|
|
fs.writeFile('./public/css/style.min.css', minified.css, function (err) {
|
|
// Finished pre-loading
|
|
});
|
|
});
|
|
}); |