2020-11-03 14:56:07 +01:00
|
|
|
const fs = require('fs');
|
|
|
|
const mime = require('mime');
|
|
|
|
const YAML = require('js-yaml');
|
|
|
|
|
2021-04-16 15:29:23 +02:00
|
|
|
const readFile = file =>
|
|
|
|
new Promise((resolve, reject) =>
|
2020-11-03 14:56:07 +01:00
|
|
|
fs.readFile(file, (err, v) => (err ? reject(err) : resolve(v))),
|
|
|
|
);
|
|
|
|
|
2021-04-16 15:29:23 +02:00
|
|
|
const parseFile = (file, data) =>
|
|
|
|
mime.getType(file) === 'text/yaml' ? YAML.safeLoad(data) : JSON.parse(data);
|
2020-11-03 14:56:07 +01:00
|
|
|
|
2021-04-16 15:29:23 +02:00
|
|
|
const filterExisting = (keepExisting, existingArray = []) => item => {
|
|
|
|
if (keepExisting) {
|
|
|
|
const found = existingArray.find(t => t.name === item.name);
|
|
|
|
return !found;
|
|
|
|
}
|
|
|
|
return true;
|
2020-11-03 14:56:07 +01:00
|
|
|
};
|
|
|
|
|
2021-04-16 15:29:23 +02:00
|
|
|
const filterEqual = (existingArray = []) => item => {
|
|
|
|
const toggle = existingArray.find(t => t.name === item.name);
|
|
|
|
if (toggle) {
|
|
|
|
return JSON.stringify(toggle) !== JSON.stringify(item);
|
|
|
|
}
|
|
|
|
return true;
|
2020-11-03 14:56:07 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
readFile,
|
|
|
|
parseFile,
|
2021-03-12 11:08:10 +01:00
|
|
|
filterExisting,
|
2020-11-03 14:56:07 +01:00
|
|
|
filterEqual,
|
|
|
|
};
|