aboutsummaryrefslogtreecommitdiff
path: root/packages/bun-release/src/github.ts
diff options
context:
space:
mode:
authorGravatar Ashcon Partovi <ashcon@partovi.net> 2023-02-01 10:56:08 -0800
committerGravatar Ashcon Partovi <ashcon@partovi.net> 2023-02-01 10:56:08 -0800
commit9c27b5d17f3e2c54482be7df05577ca36dd824b3 (patch)
tree7314889755c0760b3525bb4ef2ba030ca367d840 /packages/bun-release/src/github.ts
parent9973df028b9c272ea88804705282c4c31a4295e8 (diff)
downloadbun-9c27b5d17f3e2c54482be7df05577ca36dd824b3.tar.gz
bun-9c27b5d17f3e2c54482be7df05577ca36dd824b3.tar.zst
bun-9c27b5d17f3e2c54482be7df05577ca36dd824b3.zip
Fix getting SHA for canary
Diffstat (limited to 'packages/bun-release/src/github.ts')
-rw-r--r--packages/bun-release/src/github.ts45
1 files changed, 19 insertions, 26 deletions
diff --git a/packages/bun-release/src/github.ts b/packages/bun-release/src/github.ts
index fbbbbf267..fd743d17e 100644
--- a/packages/bun-release/src/github.ts
+++ b/packages/bun-release/src/github.ts
@@ -3,10 +3,7 @@ import { Octokit } from "octokit";
import { fetch } from "./fetch";
import { debug, log, warn, error } from "./console";
-const [owner, repo] = process.env["GITHUB_REPOSITORY"]?.split("/") ?? [
- "oven-sh",
- "bun",
-];
+const [owner, repo] = process.env["GITHUB_REPOSITORY"]?.split("/") ?? ["oven-sh", "bun"];
const octokit = new Octokit({
auth: process.env["GITHUB_TOKEN"],
@@ -24,14 +21,10 @@ const octokit = new Octokit({
export async function github<R extends Route>(
url: R | keyof Endpoints,
options?: Omit<
- R extends keyof Endpoints
- ? Endpoints[R]["parameters"] & RequestParameters
- : RequestParameters,
+ R extends keyof Endpoints ? Endpoints[R]["parameters"] & RequestParameters : RequestParameters,
"owner" | "repo"
>,
-): Promise<
- R extends keyof Endpoints ? Endpoints[R]["response"]["data"] : unknown
-> {
+): Promise<R extends keyof Endpoints ? Endpoints[R]["response"]["data"] : unknown> {
// @ts-ignore
const { data } = await octokit.request(url, {
owner,
@@ -52,7 +45,7 @@ export async function getRelease(tag?: string) {
export async function uploadAsset(tag: string, name: string, blob: Blob) {
const release = await getRelease(tag);
- const asset = release.assets.find((asset) => asset.name === name);
+ const asset = release.assets.find(asset => asset.name === name);
// Github requires that existing assets are deleted before uploading
// a new asset, but does not provide a rename or re-upload API?!?
if (asset) {
@@ -60,24 +53,21 @@ export async function uploadAsset(tag: string, name: string, blob: Blob) {
asset_id: asset.id,
});
}
- return github(
- "POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}",
- {
- baseUrl: "https://uploads.github.com",
- release_id: release.id,
- name,
- headers: {
- "content-type": blob.type,
- "content-length": blob.size,
- },
- data: Buffer.from(await blob.arrayBuffer()),
+ return github("POST {origin}/repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}", {
+ baseUrl: "https://uploads.github.com",
+ release_id: release.id,
+ name,
+ headers: {
+ "content-type": blob.type,
+ "content-length": blob.size,
},
- );
+ data: Buffer.from(await blob.arrayBuffer()),
+ });
}
export async function downloadAsset(tag: string, name: string): Promise<Blob> {
const release = await getRelease(tag);
- const asset = release.assets.find((asset) => asset.name === name);
+ const asset = release.assets.find(asset => asset.name === name);
if (!asset) {
throw new Error(`Asset not found: ${name}`);
}
@@ -86,8 +76,11 @@ export async function downloadAsset(tag: string, name: string): Promise<Blob> {
}
export async function getSha(tag: string, format?: "short" | "long") {
- const { sha } = await github("GET /repos/{owner}/{repo}/git/tags/{tag_sha}", {
- tag_sha: formatTag(tag),
+ const ref = formatTag(tag);
+ const {
+ object: { sha },
+ } = await github("GET /repos/{owner}/{repo}/git/ref/{ref}", {
+ ref: ref === "canary" ? "heads/main" : `tags/${ref}`,
});
return format === "short" ? sha.substring(0, 7) : sha;
}