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");