import { danger, message, warn } from "danger"; const { prHygiene } = require("danger-plugin-pr-hygiene"); prHygiene({ rules: { // Don't enable this rule just yet, as it can have false positives. useImperativeMood: "off", }, }); const RELEASE_NOTES_PATTERN = /Release Notes:\r?\n\s+-/gm; const body = danger.github.pr.body; const hasReleaseNotes = RELEASE_NOTES_PATTERN.test(body); if (!hasReleaseNotes) { warn( [ "This PR is missing release notes.", "", 'Please add a "Release Notes" section that describes the change:', "", "```", "Release Notes:", "", "- Added/Fixed/Improved ...", "```", "", 'If your change is not user-facing, you can use "N/A" for the entry:', "```", "Release Notes:", "", "- N/A", "```", ].join("\n"), ); } const ISSUE_LINK_PATTERN = /(? match.replace(/^#/, "").replace(/https:\/\/github\.com\/zed-industries\/zed\/issues\//, "")) .filter((issue, index, self) => self.indexOf(issue) === index); const issuesToReport = issues.map((issue) => `#${issue}`).join(", "); message( [ `This PR includes links to the following GitHub Issues: ${issuesToReport}`, "If this PR aims to close an issue, please include a `Closes #ISSUE` line at the top of the PR body.", ].join("\n"), ); }