UNPKG

danger

Version:
99 lines 5.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.inlineTemplate = exports.template = exports.messageForResultWithIssues = exports.dangerSignaturePostfix = exports.dangerSignature = exports.fileLineToString = exports.dangerIDToString = void 0; var Violation_1 = require("../../dsl/Violation"); /** * Converts a set of violations into a HTML table * * @param {string} name User facing title of table * @param {string} defaultEmoji Emoji name to show next to each item * @param {Violation[]} violations for table * @returns {string} HTML */ function table(name, defaultEmoji, violations) { if (noViolationsOrAllOfThemEmpty(violations)) { return ""; } return "\n<table>\n <thead>\n <tr>\n <th width=\"50\"></th>\n <th width=\"100%\" data-danger-table=\"true\">".concat(name, "</th>\n </tr>\n </thead>\n <tbody>").concat(violations.map(function (violation) { return htmlForValidation(defaultEmoji, violation); }).join("\n"), "</tbody>\n</table>\n"); } function htmlForValidation(defaultEmoji, violation) { var message = (0, Violation_1.isInline)(violation) ? "**".concat(violation.file, "#L").concat(violation.line, "** - ").concat(violation.message) : violation.message; if (containsMarkdown(message)) { message = "\n\n ".concat(message, "\n "); } var emojiString = ":".concat(defaultEmoji, ":"); return "<tr>\n <td>".concat(violation.icon || emojiString, "</td>\n <td>").concat(message, "</td>\n </tr>\n "); } function containsMarkdown(message) { return message.match(/[`*_~\[]+/g) ? true : false; } function noViolationsOrAllOfThemEmpty(violations) { return violations.length === 0 || violations.every(function (violation) { return !violation.message; }); } var truncate = function (msg, count) { if (!msg) { return msg; } if (msg.length < count) { return msg; } else { return msg.substring(0, count - 3) + "..."; } }; function getSummary(label, violations) { return violations .map(function (x) { return truncate(x.message, 20); }) .reduce(function (acc, value, idx) { return "".concat(acc, " ").concat(value).concat(idx === violations.length - 1 ? "" : ","); }, "".concat(violations.length, " ").concat(label, ": ")); } function buildSummaryMessage(dangerID, results) { var fails = results.fails, warnings = results.warnings, messages = results.messages, markdowns = results.markdowns; var summary = " ".concat(getSummary("failure", fails), "\n ").concat(getSummary("warning", warnings), "\n ").concat(messages.length > 0 ? "".concat(messages.length, " messages") : "", "\n ").concat(markdowns.length > 0 ? "".concat(markdowns.length, " markdown notices") : "", "\n ").concat((0, exports.dangerIDToString)(dangerID)); return summary; } var dangerIDToString = function (id) { return "DangerID: danger-id-".concat(id, ";"); }; exports.dangerIDToString = dangerIDToString; var fileLineToString = function (file, line) { return " File: ".concat(file, ";\n Line: ").concat(line, ";"); }; exports.fileLineToString = fileLineToString; var dangerSignature = function (results) { var meta = results.meta || { runtimeName: "dangerJS", runtimeHref: "https://danger.systems/js" }; return "Generated by :no_entry_sign: <a href=\"".concat(meta.runtimeHref, "\">").concat(meta.runtimeName, "</a>"); }; exports.dangerSignature = dangerSignature; /** * Postfix signature to be attached comment generated / updated by danger. */ var dangerSignaturePostfix = function (results, commitID) { var signature = (0, exports.dangerSignature)(results); if (commitID !== undefined) { signature = "".concat(signature, " against ").concat(commitID); } return signature; }; exports.dangerSignaturePostfix = dangerSignaturePostfix; /** * Comment to add when updating the PR status when issues are found */ exports.messageForResultWithIssues = "Found some issues. Don't worry, everything is fixable."; /** * A template function for creating a GitHub issue comment from Danger Results * @param {string} dangerID A string that represents a unique build * @param {DangerResults} results Data to work with * @param {string} commitID The hash that represents the latest commit * @returns {string} HTML */ function template(dangerID, results, commitID) { return "\n<!--\n".concat(buildSummaryMessage(dangerID, results), "\n-->\n").concat(table("Fails", "no_entry_sign", results.fails), "\n").concat(table("Warnings", "warning", results.warnings), "\n").concat(table("Messages", "book", results.messages), "\n").concat(results.markdowns.map(function (v) { return v.message; }).join("\n\n"), "\n<p align=\"right\">\n ").concat((0, exports.dangerSignaturePostfix)(results, commitID), "\n</p>\n"); } exports.template = template; function inlineTemplate(dangerID, results, file, line) { var printViolation = function (defaultEmoji) { return function (violation) { var emojiString = ":".concat(defaultEmoji, ":"); return "- ".concat(violation.icon || emojiString, " ").concat(violation.message); }; }; return "\n<!--\n".concat(buildSummaryMessage(dangerID, results), "\n").concat((0, exports.fileLineToString)(file, line), "\n-->\n").concat(results.fails.map(printViolation("no_entry_sign")).join("\n"), "\n").concat(results.warnings.map(printViolation("warning")).join("\n"), "\n").concat(results.messages.map(printViolation("book")).join("\n"), "\n").concat(results.markdowns.map(function (v) { return v.message; }).join("\n\n"), "\n "); } exports.inlineTemplate = inlineTemplate; //# sourceMappingURL=githubIssueTemplate.js.map