2024-03-05 10:20:36 +00:00

49 lines
1.3 KiB
JavaScript
Executable File

import { Octokit } from "@octokit/rest"
import axios from "axios"
const octokit = new Octokit({})
export default {
method: "GET",
route: "/release-notes",
fn: async (req, res) => {
if (!process.env.GITHUB_REPO) {
return res.status(400).json({
error: "GITHUB_REPO env variable not set"
})
}
const releasesNotes = []
// fetch the 3 latest releases
const releases = await octokit.repos.listReleases({
owner: process.env.GITHUB_REPO.split("/")[0],
repo: process.env.GITHUB_REPO.split("/")[1],
per_page: 3
})
for await (const release of releases.data) {
let changelogData = release.body
const bundle = release.assets.find((asset) => asset.name === "changelog.md")
if (bundle) {
const response = await axios.get(bundle.browser_download_url)
.catch(() => null)
if (response) {
changelogData = response.data
}
}
releasesNotes.push({
version: release.tag_name,
date: release.published_at,
body: changelogData,
isMd: bundle !== undefined
})
}
return res.json(releasesNotes)
}
}