mirror of
https://github.com/Koenkk/zigbee2mqtt.git
synced 2026-07-02 01:51:38 +00:00
045ee573a0
* Update * Updates * More refactoringzzz * Bindoo * Loadz of typescripting * Logga * Updates * Updates * Updates * Updates * cleanup * updates * Fix coverage * Fixes * Updates * Updates
37 lines
959 B
TypeScript
37 lines
959 B
TypeScript
import yaml from 'js-yaml';
|
|
import fs from 'fs';
|
|
import equals from 'fast-deep-equal/es6';
|
|
|
|
function read(file: string): KeyValue {
|
|
try {
|
|
return yaml.load(fs.readFileSync(file, 'utf8'));
|
|
} catch (error) {
|
|
if (error.name === 'YAMLException') {
|
|
error.file = file;
|
|
}
|
|
|
|
throw error;
|
|
}
|
|
}
|
|
|
|
function readIfExists(file: string, default_?: KeyValue): KeyValue {
|
|
return fs.existsSync(file) ? read(file) : default_;
|
|
}
|
|
|
|
function writeIfChanged(file: string, content: KeyValue): void {
|
|
const before = readIfExists(file);
|
|
if (!equals(before, content)) {
|
|
fs.writeFileSync(file, yaml.dump(content));
|
|
}
|
|
}
|
|
|
|
function updateIfChanged(file: string, key: string, value: KeyValue): void {
|
|
const content = read(file);
|
|
if (content[key] !== value) {
|
|
content[key] = value;
|
|
writeIfChanged(file, content);
|
|
}
|
|
}
|
|
|
|
export default {read, readIfExists, updateIfChanged, writeIfChanged};
|