(
packageName: string,
version: string,
body: string,
options: { makeLatest?: boolean } = {},
)
| 49 | * Returns a result object indicating success, already exists, or error. |
| 50 | */ |
| 51 | export async function createRelease( |
| 52 | packageName: string, |
| 53 | version: string, |
| 54 | body: string, |
| 55 | options: { makeLatest?: boolean } = {}, |
| 56 | ): Promise<CreateReleaseResult> { |
| 57 | let tagName = getGitTag(packageName, version); |
| 58 | let releaseName = `v${version}`; |
| 59 | |
| 60 | try { |
| 61 | if (await releaseExists(tagName)) { |
| 62 | return { status: "skipped", reason: "Already exists" }; |
| 63 | } |
| 64 | } catch (error) { |
| 65 | let message = error instanceof Error ? error.message : String(error); |
| 66 | return { status: "error", error: message }; |
| 67 | } |
| 68 | |
| 69 | try { |
| 70 | let response = await request("POST /repos/{owner}/{repo}/releases", { |
| 71 | ...requestOptions(), |
| 72 | tag_name: tagName, |
| 73 | name: releaseName, |
| 74 | body, |
| 75 | ...(options.makeLatest === false ? { make_latest: "false" } : {}), |
| 76 | }); |
| 77 | |
| 78 | return { status: "created", url: response.data.html_url }; |
| 79 | } catch (error) { |
| 80 | let message = error instanceof Error ? error.message : String(error); |
| 81 | return { status: "error", error: message }; |
| 82 | } |
| 83 | } |
| 84 | |
| 85 | /** |
| 86 | * List open PRs |
no test coverage detected