custom: refactor code for defaults

This commit is contained in:
Girish Ramakrishnan
2019-05-10 11:19:13 -07:00
parent 7177f82041
commit c1ce2977fa
3 changed files with 32 additions and 13 deletions
+1 -1
View File
@@ -174,7 +174,7 @@ function getConfig(callback) {
memory: os.totalmem(),
provider: config.provider(),
cloudronName: allSettings[settings.CLOUDRON_NAME_KEY],
features: custom.features(),
uiSpec: custom.uiSpec(),
supportEmail: custom.supportEmail()
});
});
+30 -12
View File
@@ -1,44 +1,62 @@
'use strict';
let debug = require('debug')('box:features'),
lodash = require('lodash'),
paths = require('./paths.js'),
safe = require('safetydance'),
yaml = require('js-yaml');
exports = module.exports = {
features: features,
uiSpec: uiSpec,
supportEmail: supportEmail,
alertsEmail: alertsEmail,
sendAlertsToCloudronAdmins: sendAlertsToCloudronAdmins
};
const DEFAULT = {
features: {
configureBackup: true,
dynamicDns: true,
subscription: true,
remoteSupport: true
},
support: {
email: 'support@cloudron.io'
},
alerts: {
email: '',
notifyCloudronAdmins: false
}
};
const gCustom = (function () {
try {
if (!safe.fs.existsSync(paths.CUSTOM_FILE)) return {};
return yaml.safeLoad(safe.fs.readFileSync(paths.CUSTOM_FILE, 'utf8'));
if (!safe.fs.existsSync(paths.CUSTOM_FILE)) return DEFAULT;
const c = yaml.safeLoad(safe.fs.readFileSync(paths.CUSTOM_FILE, 'utf8'));
return lodash.merge({}, DEFAULT, c);
} catch (e) {
debug(`Error loading features file from ${paths.CUSTOM_FILE} : ${e.message}`);
return {};
return DEFAULT;
}
})();
function features() {
function uiSpec() {
return {
dynamicDns: safe.query(gCustom, 'features.dynamicDns', true),
remoteSupport: safe.query(gCustom, 'features.remoteSupport', true),
subscription: safe.query(gCustom, 'features.subscription', true),
configureBackup: safe.query(gCustom, 'features.configureBackup', true)
dynamicDns: gCustom.features.dynamicDns,
remoteSupport: gCustom.features.remoteSupport,
subscription: gCustom.features.subscription,
configureBackup: gCustom.features.configureBackup
};
}
function supportEmail() {
return safe.query(gCustom, 'support.email', 'support@cloudron.io');
return gCustom.support.email;
}
function alertsEmail() {
return safe.query(gCustom, 'alerts.email', '');
return gCustom.alerts.email;
}
function sendAlertsToCloudronAdmins() {
return safe.query(gCustom, 'alerts.notifyCloudronAdmins', true);
return gCustom.alerts.notifyCloudronAdmins;
}