danger
Version:
Unit tests for Team Culture
99 lines • 5.7 kB
JavaScript
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
;