const fs = require('fs'); const path = require('path'); // Define the path to the existing changelog const changelogPath = path.join(process.cwd(), 'change-log.md'); // Function to extract unique years from the changelog entries function extractYears(data) { const yearRegex = /### v(\d{4})\./g; const years = new Set(); let match; while ((match = yearRegex.exec(data)) !== null) { years.add(match[1]); } return Array.from(years); } // Function to write a changelog file for a specific year function writeChangelogForYear(data, year) { const newChangelogPath = path.join(process.cwd(), `change-log.${year}.md`); const yearRegex = new RegExp(`### v${year}\\.[\\d\\.]+\\n(?:(?!### v\\d{4}).)*`, 'gs'); const matches = data.match(yearRegex); if (matches) { const newChangelogContent = matches.join('\n\n'); fs.writeFile(newChangelogPath, newChangelogContent, 'utf8', (err) => { if (err) { console.error("Failed to write new changelog file:", err); } else { console.log(`New changelog file for ${year} created successfully.`); } }); } else { console.log(`No entries found for the year ${year}.`); } } // Read the existing changelog fs.readFile(changelogPath, 'utf8', (err, data) => { if (err) { console.error("Failed to read file:", err); return; } // Extract years and generate a changelog file for each year const years = extractYears(data); years.forEach(year => { writeChangelogForYear(data, year); }); });