coverage-badges-cli
Version:
Create coverage badges from coverage reports. Using GitHub Actions and GitHub Workflow CPU time (no 3rd parties servers).
65 lines • 2.71 kB
JavaScript
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.badge = badge;
const badgen_1 = require("badgen");
const fs_1 = require("fs");
const mini_svg_data_uri_1 = __importDefault(require("mini-svg-data-uri"));
const lodash_get_1 = __importDefault(require("lodash.get"));
const getIconString = (path) => {
return (0, fs_1.readFileSync)(path, 'utf8');
};
const defaultColorData = {
'#49c31a': [100],
'#97c40f': [99.99, 90],
'#a0a127': [89.99, 80],
'#cba317': [79.99, 60],
'#ce0000': [59.99, 0],
};
function badge(option, summary) {
const _a = (option || {}), { label = 'coverage', style = 'classic', jsonPath = 'total.statements.pct', color: optionColor } = _a, otherOption = __rest(_a, ["label", "style", "jsonPath", "color"]);
let pct = summary;
pct = (0, lodash_get_1.default)(summary, jsonPath, 0);
if (!isNaN(Number(pct))) {
pct = Number(pct);
}
if (typeof pct !== 'number') {
throw new Error(`${jsonPath} evaluates to ${JSON.stringify(pct)} and is not a suitable path in the JSON coverage data`);
}
const colorData = defaultColorData;
const color = Object.keys(colorData).find((value, idx) => {
if (colorData[value].length === 1 && pct >= colorData[value][0]) {
return true;
}
if (colorData[value].length === 2 && pct <= colorData[value][0] && pct >= colorData[value][1]) {
return true;
}
return false;
});
const badgenArgs = Object.assign(Object.assign({}, otherOption), { style,
label, status: `${pct < 0 ? 'Unknown' : `${pct}%`}`, color: (color || 'e5e5e5').replace(/^#/, '') });
if (optionColor) {
badgenArgs.color = optionColor.replace(/^#/, '');
}
if (option.icon) {
const svgString = getIconString(option.icon);
const svgDataUri = (0, mini_svg_data_uri_1.default)(svgString);
badgenArgs.icon = svgDataUri;
}
console.log("badgenArgs", badgenArgs);
return (0, badgen_1.badgen)(badgenArgs);
}
//# sourceMappingURL=badges.js.map
;