diff --git a/lib/util/fs.js b/lib/util/fs.js new file mode 100644 index 00000000..d12e7da6 --- /dev/null +++ b/lib/util/fs.js @@ -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}; diff --git a/lib/util/settings.js b/lib/util/settings.js index 9b24c8e8..cdbf2c6c 100644 --- a/lib/util/settings.js +++ b/lib/util/settings.js @@ -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;