From 2f4c835bcc39fa8acc1f59b7c040d0aa430a00fe Mon Sep 17 00:00:00 2001 From: RafaelGSS Date: Tue, 15 Jul 2025 10:47:43 -0300 Subject: [PATCH] feat: update announcement link on --pre-release --- lib/security_blog.js | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/lib/security_blog.js b/lib/security_blog.js index cbc2e370..6ecd0e6d 100644 --- a/lib/security_blog.js +++ b/lib/security_blog.js @@ -6,7 +6,8 @@ import { PLACEHOLDERS, checkoutOnSecurityReleaseBranch, validateDate, - SecurityRelease + SecurityRelease, + commitAndPushVulnerabilitiesJSON, } from './security-release/security-release.js'; import auth from './auth.js'; import Request from './request.js'; @@ -56,16 +57,41 @@ export default class SecurityBlog extends SecurityRelease { const endDate = new Date(data.annoucementDate); endDate.setDate(endDate.getDate() + 7); + const link = `https://nodejs.org/en/blog/vulnerability/${fileName}`; this.updateWebsiteBanner(site, { startDate: data.annoucementDate, endDate: endDate.toISOString(), text: `New security releases to be made available ${data.releaseDate}`, - link: `https://nodejs.org/en/blog/vulnerability/${fileName}`, + link, type: 'warning' }); - fs.writeFileSync(file, preRelease); + cli.ok(`Announcement file created and banner has been updated. Folder: ${nodejsOrgFolder}`); + await this.updateAnnouncementLink(link); + } + + async updateAnnouncementLink(link) { + const vulnerabilitiesJSONPath = this.getVulnerabilitiesJSONPath(); + const content = this.readVulnerabilitiesJSON(vulnerabilitiesJSONPath); + let shouldCommit = false; + for (let i = 0; i < content.reports.length; ++i) { + if (content.reports[i].announcement !== link) { + content.reports[i].announcement = link; + shouldCommit = true; + } + }; + + if (shouldCommit) { + fs.writeFileSync(vulnerabilitiesJSONPath, JSON.stringify(content, null, 2)); + const commitMessage = 'chore: add announcement link'; + commitAndPushVulnerabilitiesJSON([vulnerabilitiesJSONPath], + commitMessage, { cli: this.cli, repository: this.repository }); + + this.cli.ok('Updated the announcement link in vulnerabilities.json'); + } + + return [vulnerabilitiesJSONPath]; } async createPostRelease(nodejsOrgFolder) {