Split configuration into low and high traffic files
Also, we're now handling config ourselves instead of using electron-config and config dependencies.
This commit is contained in:
parent
f59ec92fef
commit
998c35dcb3
9 changed files with 112 additions and 103 deletions
58
app/base_config.js
Normal file
58
app/base_config.js
Normal file
|
@ -0,0 +1,58 @@
|
|||
const fs = require('fs');
|
||||
|
||||
const _ = require('lodash');
|
||||
|
||||
const ENCODING = 'utf8';
|
||||
|
||||
module.exports = {
|
||||
start,
|
||||
};
|
||||
|
||||
function start(name, targetPath) {
|
||||
let cachedValue = null;
|
||||
|
||||
try {
|
||||
const text = fs.readFileSync(targetPath, ENCODING);
|
||||
cachedValue = JSON.parse(text);
|
||||
console.log(`config/get: Successfully read ${name} config file`);
|
||||
|
||||
if (!cachedValue) {
|
||||
console.log(
|
||||
`config/get: ${name} config value was falsy, cache is now empty object`
|
||||
);
|
||||
cachedValue = Object.create(null);
|
||||
}
|
||||
} catch (error) {
|
||||
if (error.code !== 'ENOENT') {
|
||||
throw error;
|
||||
}
|
||||
|
||||
console.log(
|
||||
`config/get: Did not find ${name} config file, cache is now empty object`
|
||||
);
|
||||
cachedValue = Object.create(null);
|
||||
}
|
||||
|
||||
function get(keyPath) {
|
||||
return _.get(cachedValue, keyPath);
|
||||
}
|
||||
|
||||
function set(keyPath, value) {
|
||||
_.set(cachedValue, keyPath, value);
|
||||
console.log(`config/set: Saving ${name} config to disk`);
|
||||
const text = JSON.stringify(cachedValue, null, ' ');
|
||||
fs.writeFileSync(targetPath, text, ENCODING);
|
||||
}
|
||||
|
||||
function remove() {
|
||||
console.log(`config/remove: Deleting ${name} config from disk`);
|
||||
fs.unlinkSync(targetPath);
|
||||
cachedValue = Object.create(null);
|
||||
}
|
||||
|
||||
return {
|
||||
set,
|
||||
get,
|
||||
remove,
|
||||
};
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue