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