mrAreaLabels.js 1.0 KB

123456789101112131415161718192021222324252627
  1. const { recordRuleExitStatus } = require("./configParameters.js");
  2. /**
  3. * Check if MR has area labels (light blue labels)
  4. *
  5. * @dangerjs WARN
  6. */
  7. module.exports = async function () {
  8. const ruleName = "Merge request area labels";
  9. const projectId = 103; // ESP-IDF
  10. const areaLabelColor = /^#d2ebfa$/i; // match color code (case-insensitive)
  11. const projectLabels = await danger.gitlab.api.Labels.all(projectId); // Get all project labels
  12. const areaLabels = projectLabels
  13. .filter((label) => areaLabelColor.test(label.color))
  14. .map((label) => label.name); // Filter only area labels
  15. const mrLabels = danger.gitlab.mr.labels; // Get MR labels
  16. if (!mrLabels.some((label) => areaLabels.includes(label))) {
  17. recordRuleExitStatus(ruleName, "Failed");
  18. return warn(
  19. `Please add some [area labels](${process.env.DANGER_GITLAB_HOST}/espressif/esp-idf/-/labels) to this MR.`
  20. );
  21. }
  22. // At this point, the rule has passed
  23. recordRuleExitStatus(ruleName, "Passed");
  24. };