Buckets:
| import { $ } from "bun" | |
| import path from "path" | |
| import { fileURLToPath } from "url" | |
| const rootDir = fileURLToPath(new URL("../../..", import.meta.url)) | |
| process.chdir(rootDir) | |
| const reg = process.env.REGISTRY ?? "ghcr.io/anomalyco" | |
| const tag = process.env.TAG ?? "24.04" | |
| const push = process.argv.includes("--push") || process.env.PUSH === "1" | |
| const root = path.join(rootDir, "package.json") | |
| const pkg = await Bun.file(root).json() | |
| const manager = pkg.packageManager ?? "" | |
| const bun = manager.startsWith("bun@") ? manager.slice(4) : "" | |
| if (!bun) throw new Error("packageManager must be bun@<version>") | |
| const images = ["base", "bun-node", "rust", "tauri-linux", "publish"] | |
| const setup = async () => { | |
| if (!push) return | |
| const list = await $`docker buildx ls`.text() | |
| if (list.includes("opencode")) { | |
| await $`docker buildx use opencode` | |
| return | |
| } | |
| await $`docker buildx create --name opencode --use` | |
| } | |
| await setup() | |
| const platform = "linux/amd64,linux/arm64" | |
| for (const name of images) { | |
| const image = `${reg}/build/${name}:${tag}` | |
| const file = `packages/containers/${name}/Dockerfile` | |
| if (name === "base") { | |
| if (push) { | |
| console.log(`docker buildx build --platform ${platform} -f ${file} -t ${image} --push .`) | |
| await $`docker buildx build --platform ${platform} -f ${file} -t ${image} --push .` | |
| } | |
| if (!push) { | |
| console.log(`docker build -f ${file} -t ${image} .`) | |
| await $`docker build -f ${file} -t ${image} .` | |
| } | |
| } | |
| if (name === "bun-node") { | |
| if (push) { | |
| console.log( | |
| `docker buildx build --platform ${platform} -f ${file} -t ${image} --build-arg REGISTRY=${reg} --build-arg BUN_VERSION=${bun} --push .`, | |
| ) | |
| await $`docker buildx build --platform ${platform} -f ${file} -t ${image} --build-arg REGISTRY=${reg} --build-arg BUN_VERSION=${bun} --push .` | |
| } | |
| if (!push) { | |
| console.log(`docker build -f ${file} -t ${image} --build-arg REGISTRY=${reg} --build-arg BUN_VERSION=${bun} .`) | |
| await $`docker build -f ${file} -t ${image} --build-arg REGISTRY=${reg} --build-arg BUN_VERSION=${bun} .` | |
| } | |
| } | |
| if (name !== "base" && name !== "bun-node") { | |
| if (push) { | |
| console.log( | |
| `docker buildx build --platform ${platform} -f ${file} -t ${image} --build-arg REGISTRY=${reg} --push .`, | |
| ) | |
| await $`docker buildx build --platform ${platform} -f ${file} -t ${image} --build-arg REGISTRY=${reg} --push .` | |
| } | |
| if (!push) { | |
| console.log(`docker build -f ${file} -t ${image} --build-arg REGISTRY=${reg} .`) | |
| await $`docker build -f ${file} -t ${image} --build-arg REGISTRY=${reg} .` | |
| } | |
| } | |
| if (push) { | |
| console.log(`pushed ${image}`) | |
| } | |
| } | |
Xet Storage Details
- Size:
- 2.71 kB
- Xet hash:
- e4f37ed78e429cefc9a60eac1670cdb01c72d94badeea072a2f134bd8ee17226
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.