2023-02-11 17:59:00 +03:00
|
|
|
#!/usr/bin/env tea
|
2022-12-21 00:54:26 +03:00
|
|
|
|
|
|
|
/*---
|
|
|
|
args:
|
|
|
|
- deno
|
|
|
|
- run
|
|
|
|
- --allow-net
|
|
|
|
- --allow-read
|
|
|
|
- --allow-env
|
|
|
|
---*/
|
|
|
|
|
|
|
|
import { S3 } from "s3"
|
|
|
|
import { panic } from "utils"
|
|
|
|
import Path from "path"
|
|
|
|
|
|
|
|
const usage = "usage: cache-artifacts.ts {REPO} {REF} {destname} {file}"
|
|
|
|
const repo = Deno.args[0] ?? panic(usage);
|
|
|
|
const ref = Deno.args[1] ?? panic(usage);
|
|
|
|
const dest = Deno.args[2] ?? panic(usage);
|
|
|
|
const artifacts = Deno.args[3] ?? panic(usage);
|
|
|
|
|
|
|
|
if (!repo.startsWith("teaxyz/")) throw new Error(`offical teaxyz repos only: ${repo}`)
|
|
|
|
const pr = parseInt(ref.replace(/refs\/pull\/(\d+)\/merge/, "$1"))
|
|
|
|
if (isNaN(pr)) throw new Error(`invalid ref: ${ref}`)
|
|
|
|
|
|
|
|
console.log({artifacts})
|
|
|
|
console.log({file: Path.cwd().join(artifacts)})
|
|
|
|
console.log({exists: Path.cwd().join(artifacts).isFile()})
|
|
|
|
console.log({cwd: Path.cwd()})
|
|
|
|
const file = Path.cwd().join(artifacts).isFile() ?? panic(`invalid archive: ${Path.cwd().join(artifacts)}`)
|
|
|
|
|
|
|
|
const s3 = new S3({
|
|
|
|
accessKeyID: Deno.env.get("AWS_ACCESS_KEY_ID")!,
|
|
|
|
secretKey: Deno.env.get("AWS_SECRET_ACCESS_KEY")!,
|
|
|
|
region: "us-east-1",
|
|
|
|
})
|
|
|
|
const bucket = s3.getBucket(Deno.env.get("AWS_S3_CACHE")!)
|
|
|
|
|
|
|
|
const key = `pull-request/${repo.split("/")[1]}/${pr}/${dest}`
|
|
|
|
const body = await Deno.readFile(file.string)
|
|
|
|
|
|
|
|
console.log({ uploadingTo: key })
|
|
|
|
await bucket.putObject(key, body)
|