@hunterparks/betterpr
Version:
A better way to look at PRs in Bitbucket!
99 lines (98 loc) • 4.76 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.sayGoodbye = exports.printTotalLine = exports.printRepoLine = exports.printRepoHeader = exports.printNewVersionNotice = exports.printHeader = exports.makeLink = exports.icons = exports.errorMessage = void 0;
const kleur_1 = __importDefault(require("kleur"));
const errorMessage = (message) => console.log(`${kleur_1.default.red().bold('Error:')} ${message}`);
exports.errorMessage = errorMessage;
exports.icons = {
blueCircle: () => kleur_1.default.blue('●'),
greenCheck: () => kleur_1.default.green('✔'),
magentaQuestion: () => kleur_1.default.magenta('?'),
redEx: () => kleur_1.default.red('✖'),
yellowTri: () => kleur_1.default.yellow('▲'),
};
const makeLink = (text, url) => {
const OSC = '\u001B]';
const SEP = ';';
const BEL = '\u0007';
return [OSC, '8', SEP, SEP, url, BEL, text, OSC, '8', SEP, SEP, BEL].join('');
};
exports.makeLink = makeLink;
const printHeader = (localVersion, name) => {
console.log(kleur_1.default.white().italic('Welcome to:'));
console.log(kleur_1.default.red(' ___ __ __ ___ ___ '));
console.log(kleur_1.default.yellow(' / _ )___ / /_/ /____ ____/ _ \\/ _ \\'));
console.log(kleur_1.default.green(' / _ / -_) __/ __/ -_) __/ ___/ , _/'));
console.log(kleur_1.default.cyan('/____/\\__/\\__/\\__/\\__/_/ /_/ /_/|_| \n'));
console.log(kleur_1.default.italic(`${' '.repeat(7)}${kleur_1.default.magenta(`v${localVersion}`)}${kleur_1.default.white(' by ')}${kleur_1.default.blue(name)}`));
};
exports.printHeader = printHeader;
const printNewVersionNotice = (npmVersion) => {
console.log(kleur_1.default.italic(`\n${' '.repeat(6)}Version ${kleur_1.default.green(npmVersion)} available!`));
console.log(kleur_1.default.yellow(' npm up -g @hunterparks/betterpr'));
};
exports.printNewVersionNotice = printNewVersionNotice;
const printRepoHeader = (repoName = '') => console.log(`\n${kleur_1.default.bold(`${kleur_1.default.green('[Open]')} ${kleur_1.default.white(`PRs for ${kleur_1.default.italic(repoName)}`)}`)}`);
exports.printRepoHeader = printRepoHeader;
const printRepoLine = (order, rawPr) => {
var _a, _b, _c, _d;
let prepend = '';
switch (order) {
case 10: {
// Reviewer Unapproved
prepend = exports.icons.redEx();
break;
}
case 20: {
// Reviewer Approved
prepend = exports.icons.greenCheck();
break;
}
case 30: {
// Not Reviwer
prepend = exports.icons.magentaQuestion();
break;
}
case 40: {
// Author
prepend = exports.icons.blueCircle();
break;
}
case 50: {
// WIP
prepend = ' ';
break;
}
default: {
prepend = '-';
}
}
if ((_a = rawPr.participants) === null || _a === void 0 ? void 0 : _a.some((participant) => participant.state === 'changes_requested')) {
prepend = `${exports.icons.yellowTri()} ${prepend}`;
}
else {
prepend = ` ${prepend}`;
}
const approvedCount = (_b = rawPr.participants) === null || _b === void 0 ? void 0 : _b.reduce((acc, participant) => acc +
(participant.role === 'REVIEWER' && participant.approved ? 1 : 0), 0);
const approvalsNeeded = 2;
let approvalText = `[${approvedCount}/${approvalsNeeded}]`;
if (approvedCount <= 0) {
approvalText = kleur_1.default.red(approvalText);
}
else if (approvedCount >= approvalsNeeded) {
approvalText = kleur_1.default.green(approvalText);
}
else {
approvalText = kleur_1.default.yellow(approvalText);
}
return `${prepend} ${approvalText} ${(0, exports.makeLink)(rawPr.title || '', ((_d = (_c = rawPr.links) === null || _c === void 0 ? void 0 : _c.html) === null || _d === void 0 ? void 0 : _d.href) || '')}`;
};
exports.printRepoLine = printRepoLine;
const printTotalLine = (color, icon, count, needPadding, text) => console.log(color(`${icon} ${count < 10 && needPadding ? ` ${count}` : count} ${text}`));
exports.printTotalLine = printTotalLine;
const sayGoodbye = () => console.log(kleur_1.default.white().italic('\nGoodbye!'), kleur_1.default.red('■'), kleur_1.default.yellow('■'), kleur_1.default.green('■'), kleur_1.default.cyan('■'), kleur_1.default.blue('■'), kleur_1.default.magenta('■'), kleur_1.default.white('■'), kleur_1.default.grey('■'), kleur_1.default.black('■'));
exports.sayGoodbye = sayGoodbye;