dialog prompt submit keybind + opentui event sink (#27945)

This commit is contained in:
Sebastian
2026-05-18 00:23:19 +02:00
committed by GitHub
parent e92b1fe7d7
commit f97e115ee2
9 changed files with 256 additions and 61 deletions

View File

@@ -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 <version>")
const args = process.argv.slice(2)
const usage = "Usage: bun run script/upgrade-opentui.ts [--snapshot] <version>"
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<string, unknown>
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
@@ -53,6 +79,21 @@ const editCatalog = (obj: unknown) => {
.some(Boolean)
}
const editOverrides = (obj: unknown) => {
if (!obj || typeof obj !== "object") return false
const map = obj as Record<string, unknown>
return keys
.map((key) => {
const cur = map[key]
if (typeof cur !== "string") return false
const next = snapshot ? ver : "catalog:"
if (next === cur) return false
map[key] = next
return true
})
.some(Boolean)
}
const out = (
await Promise.all(
files.map(async (rel) => {
@@ -61,9 +102,10 @@ const out = (
const json = JSON.parse(txt)
const hit = [
editCatalog(json.workspaces?.catalog),
editDeps(json.dependencies),
editDeps(json.devDependencies),
editDeps(json.peerDependencies),
editOverrides(json.overrides),
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 +119,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}`)
}