Something went wrong. Try again.
opencode v2 mirror
Something went wrong. Try again.
TypeScript
1234567891011121314151617181920212223242526272829303132333435363738394041424344#!/usr/bin/env bun
import { $ } from "bun"import path from "path"import os from "os"import { ZenData } from "../src/model"
const root = path.resolve(process.cwd(), "..", "..", "..")const models = await $`bun sst secret list --stage frank`.cwd(root).text()const PARTS = 30
// read the line starting with "ZEN_MODELS"const lines = models.split("\n")const oldValues = Array.from({ length: PARTS }, (_, i) => { const value = lines .find((line) => line.startsWith(`ZEN_MODELS${i + 1}=`)) ?.split("=") .slice(1) .join("=") if (!value) throw new Error(`ZEN_MODELS${i + 1} not found`) return value})
// store the prettified json to a temp fileconst filename = `models-${Date.now()}.json`const tempFile = Bun.file(path.join(os.tmpdir(), filename))await tempFile.write(JSON.stringify(JSON.parse(oldValues.join("")), null, 2))console.log("tempFile", tempFile.name)
// open temp file in vim and read the file on closeawait $`vim ${tempFile.name}`const newValue = JSON.stringify(JSON.parse(await tempFile.text()))ZenData.validate(JSON.parse(newValue))
// update the secretconst chunk = Math.ceil(newValue.length / PARTS)const newValues = Array.from({ length: PARTS }, (_, i) => newValue.slice(chunk * i, i === PARTS - 1 ? undefined : chunk * (i + 1)),)
const envFile = Bun.file(path.join(os.tmpdir(), `models-${Date.now()}.env`))await envFile.write(newValues.map((v, i) => `ZEN_MODELS${i + 1}="${v.replace(/"/g, '\\"')}"`).join("\n"))await $`bun sst secret load ${envFile.name} --stage frank`.cwd(root)