82 lines
2.3 KiB
JavaScript
82 lines
2.3 KiB
JavaScript
import { execFileSync } from "child_process"
|
|
import fs from "fs"
|
|
import os from "os"
|
|
import path from "path"
|
|
import { fileURLToPath } from "url"
|
|
|
|
const __filename = fileURLToPath(import.meta.url)
|
|
const __dirname = path.dirname(__filename)
|
|
|
|
const root = path.resolve(__dirname, "..")
|
|
const repoRoot = path.resolve(root, "..", "..")
|
|
|
|
const r2Bucket = process.env.CODENOMAD_R2_BUCKET
|
|
|
|
if (!r2Bucket) {
|
|
console.error("Missing env var: CODENOMAD_R2_BUCKET")
|
|
process.exit(1)
|
|
}
|
|
|
|
const uiPackageJsonPath = path.join(repoRoot, "packages/ui/package.json")
|
|
const uiPackageJson = JSON.parse(fs.readFileSync(uiPackageJsonPath, "utf-8"))
|
|
const uiVersion = uiPackageJson.version
|
|
|
|
if (!uiVersion) {
|
|
console.error("Missing packages/ui/package.json version")
|
|
process.exit(1)
|
|
}
|
|
|
|
const uiBuildDir = path.join(repoRoot, "packages/ui/src/renderer/dist")
|
|
if (!fs.existsSync(uiBuildDir)) {
|
|
console.error(`Missing UI build dir: ${uiBuildDir}. Run UI build first.`)
|
|
process.exit(1)
|
|
}
|
|
|
|
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "codenomad-ui-release-"))
|
|
const zipPath = path.join(tmpDir, `ui-${uiVersion}.zip`)
|
|
|
|
try {
|
|
// Zip the CONTENTS of the dist dir (so index.html is at zip root).
|
|
execFileSync("/usr/bin/zip", ["-q", "-r", zipPath, "."], { cwd: uiBuildDir, stdio: "inherit" })
|
|
|
|
// Upload to R2.
|
|
const objectKey = `ui/ui-${uiVersion}.zip`
|
|
console.log(`[release-ui] Uploading ${zipPath} -> r2://${r2Bucket}/${objectKey}`)
|
|
|
|
execFileSync(
|
|
"npx",
|
|
["wrangler", "r2", "object", "put", "--remote", `${r2Bucket}/${objectKey}`, "--file", zipPath],
|
|
{ cwd: root, stdio: "inherit" },
|
|
)
|
|
|
|
// Generate version.json into packages/cloudflare/dist
|
|
console.log("[release-ui] Generating version.json")
|
|
execFileSync(
|
|
process.execPath,
|
|
[path.join(root, "scripts/build-manifest.mjs"), "--zip", zipPath],
|
|
{
|
|
cwd: root,
|
|
stdio: "inherit",
|
|
env: {
|
|
...process.env,
|
|
CODENOMAD_R2_BUCKET: r2Bucket,
|
|
},
|
|
},
|
|
)
|
|
|
|
console.log("[release-ui] Deploying worker")
|
|
execFileSync("npx", ["wrangler", "deploy"], {
|
|
cwd: root,
|
|
stdio: "inherit",
|
|
env: {
|
|
...process.env,
|
|
CLOUDFLARE_API_TOKEN: process.env.CLOUDFLARE_API_TOKEN,
|
|
CLOUDFLARE_ACCOUNT_ID: process.env.CLOUDFLARE_ACCOUNT_ID,
|
|
},
|
|
})
|
|
|
|
console.log("[release-ui] Done")
|
|
} finally {
|
|
fs.rmSync(tmpDir, { recursive: true, force: true })
|
|
}
|