UNPKG

renovate

Version:

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

62 lines 2.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.id = void 0; exports.getReleaseNotesMd = getReleaseNotesMd; exports.getReleaseList = getReleaseList; const tslib_1 = require("tslib"); const changelog_filename_regex_1 = tslib_1.__importDefault(require("changelog-filename-regex")); const logger_1 = require("../../../../../../logger"); const schema_1 = require("../../../../../../modules/datasource/forgejo-releases/schema"); const schema_2 = require("../../../../../../modules/platform/gitea/schema"); const forgejo_1 = require("../../../../../../util/http/forgejo"); const string_1 = require("../../../../../../util/string"); const common_1 = require("../common"); exports.id = 'forgejo-changelog'; const http = new forgejo_1.ForgejoHttp(exports.id); async function getReleaseNotesMd(repository, apiBaseUrl, sourceDirectory) { logger_1.logger.trace('forgejo.getReleaseNotesMd()'); const apiPrefix = `${apiBaseUrl}repos/${repository}/contents`; const sourceDir = sourceDirectory ? `/${sourceDirectory}` : ''; const tree = (await http.getJson(`${apiPrefix}${sourceDir}`, { paginate: false, // no pagination yet }, schema_2.ContentsListResponse)).body; const allFiles = tree.filter((f) => f.type === 'file'); let files = []; if (!files.length) { files = allFiles.filter((f) => changelog_filename_regex_1.default.test(f.name)); } if (!files.length) { logger_1.logger.trace('no changelog file found'); return null; } const { path: changelogFile } = files .sort((a, b) => (0, common_1.compareChangelogFilePath)(a.path, b.path)) .shift(); /* istanbul ignore if */ if (files.length !== 0) { logger_1.logger.debug(`Multiple candidates for changelog file, using ${changelogFile}`); } const fileRes = await http.getJson(`${apiPrefix}/${changelogFile}`, schema_2.ContentsResponse); // istanbul ignore if: should never happen if (!fileRes.body.content) { logger_1.logger.debug(`Missing content for changelog file, using ${changelogFile}`); return null; } const changelogMd = (0, string_1.fromBase64)(fileRes.body.content) + '\n#\n##'; return { changelogFile, changelogMd }; } async function getReleaseList(project, _release) { logger_1.logger.trace('forgejo.getReleaseNotesMd()'); const apiUrl = `${project.apiBaseUrl}repos/${project.repository}/releases`; const res = await http.getJson(`${apiUrl}?draft=false`, { paginate: true, }, schema_1.Releases); return res.body.map((release) => ({ url: `${project.baseUrl}${project.repository}/releases/tag/${release.tag_name}`, notesSourceUrl: apiUrl, name: release.name, body: release.body, tag: release.tag_name, })); } //# sourceMappingURL=index.js.map