Files
EpicNext-Cms/scripts/merge-config.cjs
T
openhands beae86194d
CI / check (push) Successful in 29s
CI / release (push) Skipped
CI / deploy (push) Failing after 1m23s
fix: resolve biome lint errors in prisma-facade
- Fix noPrecisionLoss on BIGINT UNSIGNED max value (2^64-1) with biome-ignore comments
- Fix noThenProperty on custom thenable with biome-ignore comment
- Auto-format remaining files (biome check --write)
- Re-stage auto-fixed files from previous commit
2026-07-31 14:17:06 +02:00

54 lines
1.1 KiB
JavaScript

const fs = require("fs");
const JSON5 = require("json5");
const exampleFile = process.argv[2];
const targetFile = process.argv[3];
if (!exampleFile || !targetFile) {
process.exit(1);
}
function deepMerge(target, source) {
const result = { ...target };
for (const key of Object.keys(source)) {
if (
source[key] !== null &&
typeof source[key] === "object" &&
!Array.isArray(source[key])
) {
result[key] = deepMerge(target[key] || {}, source[key]);
} else {
if (!(key in result)) {
result[key] = source[key];
}
}
}
return result;
}
let example;
try {
const content = fs.readFileSync(exampleFile, "utf-8");
example = JSON5.parse(content);
} catch {
process.exit(1);
}
let current = {};
try {
if (fs.existsSync(targetFile)) {
const content = fs.readFileSync(targetFile, "utf-8");
current = JSON5.parse(content);
}
} catch {
current = {};
}
const merged = deepMerge(current, example);
const isJson5 = targetFile.endsWith(".json5");
const output = isJson5
? JSON5.stringify(merged, null, 4)
: JSON.stringify(merged, null, 4);
fs.writeFileSync(targetFile, output + "\n");