UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

283 lines • 10.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.renovateToForgejoStatusMapping = exports.forgejoToRenovateStatusMapping = exports.forgejoHttp = void 0; exports.getCurrentUser = getCurrentUser; exports.getVersion = getVersion; exports.searchRepos = searchRepos; exports.orgListRepos = orgListRepos; exports.getRepo = getRepo; exports.getRepoContents = getRepoContents; exports.createPR = createPR; exports.updatePR = updatePR; exports.closePR = closePR; exports.mergePR = mergePR; exports.getPR = getPR; exports.getPRByBranch = getPRByBranch; exports.requestPrReviewers = requestPrReviewers; exports.createIssue = createIssue; exports.updateIssue = updateIssue; exports.updateIssueLabels = updateIssueLabels; exports.closeIssue = closeIssue; exports.searchIssues = searchIssues; exports.getIssue = getIssue; exports.getRepoLabels = getRepoLabels; exports.getOrgLabels = getOrgLabels; exports.unassignLabel = unassignLabel; exports.createComment = createComment; exports.updateComment = updateComment; exports.deleteComment = deleteComment; exports.getComments = getComments; exports.createCommitStatus = createCommitStatus; exports.getCombinedCommitStatus = getCombinedCommitStatus; exports.getBranch = getBranch; const logger_1 = require("../../../logger"); const forgejo_1 = require("../../../util/http/forgejo"); const string_1 = require("../../../util/string"); const url_1 = require("../../../util/url"); const utils_1 = require("./utils"); exports.forgejoHttp = new forgejo_1.ForgejoHttp(); const urlEscape = (raw) => encodeURIComponent(raw); const commitStatusStates = [ 'unknown', 'success', 'pending', 'warning', 'failure', 'error', ]; async function getCurrentUser(options) { const url = `${utils_1.API_PATH}/user`; const res = await exports.forgejoHttp.getJsonUnchecked(url, options); return res.body; } async function getVersion(options) { const url = `${utils_1.API_PATH}/version`; const res = await exports.forgejoHttp.getJsonUnchecked(url, options); return res.body.version; } async function searchRepos(params, options) { const query = (0, url_1.getQueryString)(params); const url = `${utils_1.API_PATH}/repos/search?${query}`; const res = await exports.forgejoHttp.getJsonUnchecked(url, { ...options, paginate: true, }); if (!res.body.ok) { throw new Error('Unable to search for repositories, ok flag has not been set'); } return res.body.data; } async function orgListRepos(organization, options) { const url = `${utils_1.API_PATH}/orgs/${organization}/repos`; const res = await exports.forgejoHttp.getJsonUnchecked(url, { ...options, paginate: true, }); return res.body; } async function getRepo(repoPath, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}`; const res = await exports.forgejoHttp.getJsonUnchecked(url, options); return res.body; } async function getRepoContents(repoPath, filePath, ref, options) { const query = (0, url_1.getQueryString)(ref ? { ref } : {}); const url = `${utils_1.API_PATH}/repos/${repoPath}/contents/${urlEscape(filePath)}?${query}`; const res = await exports.forgejoHttp.getJsonUnchecked(url, options); if (res.body.content) { res.body.contentString = (0, string_1.fromBase64)(res.body.content); } return res.body; } async function createPR(repoPath, params, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/pulls`; const res = await exports.forgejoHttp.postJson(url, { ...options, body: params, }); return res.body; } async function updatePR(repoPath, idx, params, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/pulls/${idx}`; const res = await exports.forgejoHttp.patchJson(url, { ...options, body: params, }); return res.body; } async function closePR(repoPath, idx, options) { await updatePR(repoPath, idx, { ...options, state: 'closed', }); } async function mergePR(repoPath, idx, params, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/pulls/${idx}/merge`; await exports.forgejoHttp.postJson(url, { ...options, body: params, }); } async function getPR(repoPath, idx, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/pulls/${idx}`; const res = await exports.forgejoHttp.getJsonUnchecked(url, options); return res.body; } async function getPRByBranch(repoPath, base, head, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/pulls/${base}/${head}`; try { const res = await exports.forgejoHttp.getJsonUnchecked(url, options); return res.body; } catch (err) { logger_1.logger.trace({ err }, 'Error while fetching PR'); if (err.statusCode !== 404) { logger_1.logger.debug({ err }, 'Error while fetching PR'); } return null; } } async function requestPrReviewers(repoPath, idx, params, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/pulls/${idx}/requested_reviewers`; await exports.forgejoHttp.postJson(url, { ...options, body: params, }); } async function createIssue(repoPath, params, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/issues`; const res = await exports.forgejoHttp.postJson(url, { ...options, body: params, }); return res.body; } async function updateIssue(repoPath, idx, params, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/issues/${idx}`; const res = await exports.forgejoHttp.patchJson(url, { ...options, body: params, }); return res.body; } async function updateIssueLabels(repoPath, idx, params, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/issues/${idx}/labels`; const res = await exports.forgejoHttp.putJson(url, { ...options, body: params, }); return res.body; } async function closeIssue(repoPath, idx, options) { await updateIssue(repoPath, idx, { ...options, state: 'closed', }); } async function searchIssues(repoPath, params, options) { const query = (0, url_1.getQueryString)({ ...params, type: 'issues' }); const url = `${utils_1.API_PATH}/repos/${repoPath}/issues?${query}`; const res = await exports.forgejoHttp.getJsonUnchecked(url, { ...options, paginate: true, }); return res.body; } async function getIssue(repoPath, idx, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/issues/${idx}`; const res = await exports.forgejoHttp.getJsonUnchecked(url, options); return res.body; } async function getRepoLabels(repoPath, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/labels`; const res = await exports.forgejoHttp.getJsonUnchecked(url, options); return res.body; } async function getOrgLabels(orgName, options) { const url = `${utils_1.API_PATH}/orgs/${orgName}/labels`; const res = await exports.forgejoHttp.getJsonUnchecked(url, options); return res.body; } async function unassignLabel(repoPath, issue, label, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/issues/${issue}/labels/${label}`; await exports.forgejoHttp.deleteJson(url, options); } async function createComment(repoPath, issue, body, options) { const params = { body }; const url = `${utils_1.API_PATH}/repos/${repoPath}/issues/${issue}/comments`; const res = await exports.forgejoHttp.postJson(url, { ...options, body: params, }); return res.body; } async function updateComment(repoPath, idx, body, options) { const params = { body }; const url = `${utils_1.API_PATH}/repos/${repoPath}/issues/comments/${idx}`; const res = await exports.forgejoHttp.patchJson(url, { ...options, body: params, }); return res.body; } async function deleteComment(repoPath, idx, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/issues/comments/${idx}`; await exports.forgejoHttp.deleteJson(url, options); } async function getComments(repoPath, issue, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/issues/${issue}/comments`; const res = await exports.forgejoHttp.getJsonUnchecked(url, options); return res.body; } async function createCommitStatus(repoPath, branchCommit, params, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/statuses/${branchCommit}`; const res = await exports.forgejoHttp.postJson(url, { ...options, body: params, }); return res.body; } exports.forgejoToRenovateStatusMapping = { unknown: 'yellow', success: 'green', pending: 'yellow', warning: 'red', failure: 'red', error: 'red', }; exports.renovateToForgejoStatusMapping = { green: 'success', yellow: 'pending', red: 'failure', }; function filterStatus(data) { const ret = {}; for (const i of data) { if (!ret[i.context] || ret[i.context].id < i.id) { ret[i.context] = i; } } return Object.values(ret); } async function getCombinedCommitStatus(repoPath, branchName, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/commits/${urlEscape(branchName)}/statuses`; const res = await exports.forgejoHttp.getJsonUnchecked(url, { ...options, paginate: true, }); let worstState = 0; const statuses = filterStatus(res.body); for (const cs of statuses) { worstState = Math.max(worstState, commitStatusStates.indexOf(cs.status)); } return { worstStatus: commitStatusStates[worstState], statuses, }; } async function getBranch(repoPath, branchName, options) { const url = `${utils_1.API_PATH}/repos/${repoPath}/branches/${urlEscape(branchName)}`; const res = await exports.forgejoHttp.getJsonUnchecked(url, options); return res.body; } //# sourceMappingURL=forgejo-helper.js.map