NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Gitea PR CI
// @description Shows the Continuous Integration status on pull requests.
// @copyright 2019, Sijmen Schoon (https://sijmenschoon.nl/)
// @license MIT
// @version 0.1.3
// @author sijmen
// @grant none
// ==/UserScript==
function statusIcon(status) {
switch (status) {
case "pending":
return '<i class="commit-status circle icon yellow">';
case "success":
return '<i class="commit-status check icon green">';
case "error":
return '<i class="commit-status warning icon red">';
case "failure":
return '<i class="commit-status remove icon red">';
case "warning":
return '<i class="commit-status warning sign icon yellow">';
default:
return '';
};
}
async function main() {
// Get the latest status
const path = `/api/v1/repos/${window.location.pathname}`;
const repo = await fetch(`${path}`).then(r => r.json());
const head = repo.head.sha;
const statuses = await fetch(`${path}/../../commits/${head}/statuses`).then(r => r.json());
if (statuses.length === 0) {
return;
}
const status = statuses.sort((a, b) => b.id - a.id)[0];
console.log(statuses);
// Append the icon and description
const icon = $(`<a target="_blank" href="${status.target_url}" class="ci-url">`).append(statusIcon(status.status))
$(".pull-desc").append(' ∙ ', icon, status.description);
}
main();