UNPKG

@ossjs/release

Version:

Minimalistic, opinionated, and predictable release automation tool.

39 lines (32 loc) 911 B
import { invariant } from 'outvariant' import { getInfo } from '#/src/utils/git/get-info.js' export interface GitHubRelease { tag_name: string html_url: string } export async function getGitHubRelease( tag: string | ('latest' & {}), ): Promise<GitHubRelease | undefined> { const repo = await getInfo() const response = await fetch( tag === 'latest' ? `https://api.github.com/repos/${repo.owner}/${repo.name}/releases/latest` : `https://api.github.com/repos/${repo.owner}/${repo.name}/releases/tags/${tag}`, { headers: { Accept: 'application/json', Authorization: `token ${process.env.GITHUB_TOKEN}`, }, }, ) if (response.status === 404) { return undefined } invariant( response.ok, 'Failed to fetch GitHub release for tag "%s": server responded with %d.\n\n%s', tag, response.status, ) return response.json() }