From 24f7e87fbd9d65d95fa0a650985c88b4e434c581 Mon Sep 17 00:00:00 2001 From: Sebastian Herrlinger Date: Sat, 16 May 2026 22:57:36 +0200 Subject: [PATCH] otui snapshot mode --- script/upgrade-opentui.ts | 46 ++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/script/upgrade-opentui.ts b/script/upgrade-opentui.ts index 3fc194e167..8a299fdaa5 100644 --- a/script/upgrade-opentui.ts +++ b/script/upgrade-opentui.ts @@ -2,9 +2,33 @@ import path from "node:path" -const raw = process.argv[2] -if (!raw) { - console.error("Usage: bun run script/upgrade-opentui.ts ") +const args = process.argv.slice(2) +const usage = "Usage: bun run script/upgrade-opentui.ts [--snapshot] " + +if (args.includes("--help") || args.includes("-h")) { + console.log(usage) + process.exit(0) +} + +const snapshotArg = args.find((arg) => arg.startsWith("--snapshot=")) +const snapshot = args.includes("--snapshot") || snapshotArg !== undefined +const unknown = args.find((arg) => arg.startsWith("-") && arg !== "--snapshot" && !arg.startsWith("--snapshot=")) +if (unknown) { + console.error(`Unknown option: ${unknown}`) + console.error(usage) + process.exit(1) +} + +const positional = args.filter((arg) => arg !== "--snapshot" && !arg.startsWith("--snapshot=")) +const raw = snapshotArg?.slice("--snapshot=".length) || positional[0] +if (!raw || positional.length > (snapshotArg ? 0 : 1)) { + console.error(usage) + process.exit(1) +} + +if (snapshotArg === "--snapshot=") { + console.error("Missing snapshot version") + console.error(usage) process.exit(1) } @@ -17,22 +41,24 @@ const files = (await Array.fromAsync(new Bun.Glob("**/package.json").scan({ cwd: (file) => !file.split("/").some((part) => skip.has(part)), ) -const setVersion = (cur: string) => { +const setVersion = (cur: string, kind: "dep" | "peer") => { if (cur === "catalog:" || cur.startsWith("workspace:")) return cur + if (snapshot) return ver + if (kind === "peer") return `>=${ver}` if (cur.startsWith(">=")) return `>=${ver}` if (cur.startsWith("^")) return `^${ver}` if (cur.startsWith("~")) return `~${ver}` return ver } -const editDeps = (obj: unknown) => { +const editDeps = (obj: unknown, kind: "dep" | "peer") => { if (!obj || typeof obj !== "object") return false const map = obj as Record return keys .map((key) => { const cur = map[key] if (typeof cur !== "string") return false - const next = setVersion(cur) + const next = setVersion(cur, kind) if (next === cur) return false map[key] = next return true @@ -61,9 +87,9 @@ const out = ( const json = JSON.parse(txt) const hit = [ editCatalog(json.workspaces?.catalog), - editDeps(json.dependencies), - editDeps(json.devDependencies), - editDeps(json.peerDependencies), + editDeps(json.dependencies, "dep"), + editDeps(json.devDependencies, "dep"), + editDeps(json.peerDependencies, "peer"), ].some(Boolean) if (!hit) return null await Bun.write(file, `${JSON.stringify(json, null, 2)}\n`) @@ -77,7 +103,7 @@ if (out.length === 0) { process.exit(0) } -console.log(`Updated opentui to ${ver} in:`) +console.log(`Updated opentui${snapshot ? " snapshot" : ""} to ${ver} in:`) for (const file of out) { console.log(`- ${file}`) }