Extract IO from settings.js

This commit is contained in:
qm3ster
2019-03-08 20:30:00 +02:00
committed by Koen Kanters
parent 07765093be
commit 9eed7e271e
2 changed files with 24 additions and 18 deletions
+16
View File
@@ -0,0 +1,16 @@
const yaml = require('js-yaml');
const fs = require('fs');
function readYaml(file) {
return yaml.safeLoad(fs.readFileSync(file, 'utf8'));
}
function readYamlIfExists(file) {
return fs.existsSync(file) ? readYaml(file) : null;
}
function writeYaml(file, content) {
fs.writeFileSync(file, yaml.safeDump(content));
}
module.exports = {readYaml, readYamlIfExists, writeYaml};
+8 -18
View File
@@ -1,10 +1,8 @@
const yaml = require('js-yaml');
const fs = require('fs');
const data = require('./data');
const file = data.joinPath('configuration.yaml');
const objectAssignDeep = require(`object-assign-deep`);
const path = require('path');
const fs = require('./fs');
const onChangeHandlers = [];
const defaults = {
@@ -85,40 +83,32 @@ function write() {
const toWrite = objectAssignDeep.noMutate(settings);
// Read settings to check if we have to split devices/groups into separate file.
const actual = readYaml(file);
const actual = fs.readYaml(file);
if (typeof actual.devices === 'string') {
writeYaml(data.joinPath(actual.devices), settings.devices);
fs.writeYaml(data.joinPath(actual.devices), settings.devices);
toWrite.devices = actual.devices;
}
if (typeof actual.groups === 'string') {
writeYaml(data.joinPath(actual.groups), settings.groups);
fs.writeYaml(data.joinPath(actual.groups), settings.groups);
toWrite.groups = actual.groups;
}
writeYaml(file, toWrite);
}
function readYaml(file) {
return yaml.safeLoad(fs.readFileSync(file, 'utf8'));
}
function writeYaml(file, content) {
fs.writeFileSync(file, yaml.safeDump(content));
fs.writeYaml(file, toWrite);
}
function read() {
const s = readYaml(file);
const s = fs.readYaml(file);
// Read devices/groups configuration from separate file.
if (typeof s.devices === 'string') {
const file = data.joinPath(s.devices);
s.devices = fs.existsSync(file) ? readYaml(file) : null;
s.devices = fs.readYamlIfExists(file);
}
if (typeof s.groups === 'string') {
const file = data.joinPath(s.groups);
s.groups = fs.existsSync(file) ? readYaml(file) : null;
s.groups = fs.readYamlIfExists(file);
}
return s;