Add logic to parse some of the settings

This commit is contained in:
MagicalCodeMonkey 2020-04-01 22:49:36 -04:00
parent 0a5548ec7f
commit 9a2786705c
1 changed files with 64 additions and 0 deletions

View File

@ -79,6 +79,67 @@ module.exports = function () {
// console.log(`Settings: '${settings[setting.local]}'; '${setting.default}'`);
output[setting.local] = args[setting.env] || args[setting.local] || process.env[setting.env] || process.env[setting.local] || settings[setting.env] || settings[setting.local] || setting.default;
// Make sure these settings are properly formatted
if(output[setting.local]) {
// Make sure these settings are properly formatted to JSON
let jsonSettings = ['authentication', 'customServer'];
if(jsonSettings.includes(setting.local) && output[setting.local]) {
if(typeof output[setting.local] !== "object") {
console.log(`${setting.local}/${setting.env} must be a JSON object. Attempting to convert it for you.`);
try {
let parsed = JSON.parse(output[setting.local]);
output[setting.local] = parsed;
}
catch(e) {
console.log(`- Unable to parse '${output[setting.local]}'`);
console.log(`- Please check your syntax. Reverting to default.`);
}
console.log(`- Done.`);
}
}
// Make sure these settings are properly formatted to an Array
// This currently is only coded to handle the servers setting which is an Array of JSON objects
let arraySettings = ['servers'];
if(arraySettings.includes(setting.local)) {
if(!Array.isArray(output[setting.local])) {
console.log(`${setting.local}/${setting.env} must be an Array of JSON objects. Attempting to convert it for you.`);
let temp = output[setting.local].trim();
temp = temp.replace("[", "");
temp = temp.replace("]", "");
let tempArr = temp.split("},");
if(tempArr.length > 0) {
let tempOutArr = [];
tempArr.forEach(element => {
try {
if(!element.endsWith('}')) {
element = element + '}';
}
let parsed = JSON.parse(element);
tempOutArr.push(parsed);
}
catch(e) {
console.log(`- Unable to parse '${element}'`);
console.log(`- Please check your syntax. Skipping...`);
}
});
if(tempOutArr.length == 0) {
console.log(`- No elements to use. Reverting to default.`);
}
output[setting.local] = tempOutArr;
}
else {
console.log(`No array elements found =(. Reverting to default.`);
output[setting.local] = setting.default;
}
console.log(`- Done.`);
}
}
}
// Backwards compatibilty for PORT ENV setting
if(setting.local == 'webapp_port' && output[setting.local] == 8088) {
let port = args['PORT'] || process.env['PORT'] || settings['PORT'];
@ -92,17 +153,20 @@ module.exports = function () {
if ((setting.local == 'webroot' || setting.local == 'accessUrl') && output[setting.local].endsWith("/")) {
console.log(`${setting.local}/${setting.env} should not end in '/'. Removing trailing slash(es) for you.`);
output[setting.local] = output[setting.local].replace(/\/+$/, "");
console.log(`- Done.`);
}
// Add leading slash, if not provided
if (setting.local == 'webroot' && output[setting.local].length > 1 && !output[setting.local].startsWith("/")) {
console.log(`${setting.local}/${setting.env} should always start with '/'. Adding the leading slash for you.`);
// Make sure it starts with one leading slash
output[setting.local] = `/${output[setting.local]}`;
console.log(`- Done.`);
}
// Make sure 'webroot' and 'serverroot' aren't set to '/'. Revert to default if they do.
if ((setting.local == 'webroot' || setting.local == 'serverroot') && output[setting.local] == '/') {
console.log(`${setting.local}/${setting.env} cannot be set to '/'. Reverting to default: '${setting.default}'`);
output[setting.local] = setting.default;
console.log(`- Done.`);
}
process.env[setting.env] = output[setting.local];
}