From b20118fdbd2b628177a718e38827edef93d6151e Mon Sep 17 00:00:00 2001 From: Simon Klee Date: Sat, 18 Apr 2026 15:24:50 +0200 Subject: [PATCH] run.ts and footer cleanup --- packages/opencode/src/cli/cmd/run.ts | 22 ++++++++++----------- packages/opencode/src/cli/cmd/run/footer.ts | 8 ++++++-- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts index 20ce245831..5d032c29e0 100644 --- a/packages/opencode/src/cli/cmd/run.ts +++ b/packages/opencode/src/cli/cmd/run.ts @@ -195,39 +195,37 @@ export const RunCommand = cmd({ handler: async (args) => { const rawMessage = [...args.message, ...(args["--"] || [])].join(" ") const thinking = args.interactive ? (args.thinking ?? true) : (args.thinking ?? false) + const die = (message: string): never => { + UI.error(message) + process.exit(1) + } let message = [...args.message, ...(args["--"] || [])] .map((arg) => (arg.includes(" ") ? `"${arg.replace(/"/g, '\\"')}"` : arg)) .join(" ") if (args.interactive && args.command) { - UI.error("--interactive cannot be used with --command") - process.exit(1) + die("--interactive cannot be used with --command") } if (args.demo && !args.interactive) { - UI.error("--demo requires --interactive") - process.exit(1) + die("--demo requires --interactive") } if (args.demoText && args.demo !== "text") { - UI.error("--demo-text requires --demo text") - process.exit(1) + die("--demo-text requires --demo text") } if (args.interactive && args.format === "json") { - UI.error("--interactive cannot be used with --format json") - process.exit(1) + die("--interactive cannot be used with --format json") } if (args.interactive && !process.stdin.isTTY) { - UI.error("--interactive requires a TTY") - process.exit(1) + die("--interactive requires a TTY") } if (args.interactive && !process.stdout.isTTY) { - UI.error("--interactive requires a TTY stdout") - process.exit(1) + die("--interactive requires a TTY stdout") } const root = Filesystem.resolve(process.env.PWD ?? process.cwd()) diff --git a/packages/opencode/src/cli/cmd/run/footer.ts b/packages/opencode/src/cli/cmd/run/footer.ts index b80b85efee..c686aaa1c5 100644 --- a/packages/opencode/src/cli/cmd/run/footer.ts +++ b/packages/opencode/src/cli/cmd/run/footer.ts @@ -327,10 +327,14 @@ export class RunFooter implements FooterApi { if (prev.phase === "running" && state.phase === "idle") { this.flush() - this.flushing = this.flushing.then(() => this.scrollback.complete()).catch(() => {}) + this.completeScrollback() } } + private completeScrollback(): void { + this.flushing = this.flushing.then(() => this.scrollback.complete()).catch(() => {}) + } + private present(view: FooterView): void { if (this.isGone) { return @@ -382,7 +386,7 @@ export class RunFooter implements FooterApi { this.flush() if (this.state().phase === "idle") { - this.flushing = this.flushing.then(() => this.scrollback.complete()).catch(() => {}) + this.completeScrollback() } return this.flushing.then(async () => {