summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorWendell Misiedjan <[email protected]>2025-06-27 20:09:35 +0200
committerGitHub <[email protected]>2025-06-27 14:09:35 -0400
commit3cfd9d80bc7b720f2bb14d153ce8b196e6996f25 (patch)
tree54f7a65a613cb2a326779c8e8f49ff30eeda095c
parente0553b8d2cd2085d7fc4e948fbcb527c1290b4a0 (diff)
downloadopencode-3cfd9d80bc7b720f2bb14d153ce8b196e6996f25.tar.gz
opencode-3cfd9d80bc7b720f2bb14d153ce8b196e6996f25.zip
fix: bunproc stdout / stderr parsing, error handling for bun ResolveMessage (#468)
-rw-r--r--packages/opencode/src/bun/index.ts11
-rw-r--r--packages/opencode/src/index.ts15
2 files changed, 19 insertions, 7 deletions
diff --git a/packages/opencode/src/bun/index.ts b/packages/opencode/src/bun/index.ts
index b48ab16f7..7a7d89cf5 100644
--- a/packages/opencode/src/bun/index.ts
+++ b/packages/opencode/src/bun/index.ts
@@ -3,6 +3,7 @@ import { Global } from "../global"
import { Log } from "../util/log"
import path from "path"
import { NamedError } from "../util/error"
+import { readableStreamToText } from "bun"
export namespace BunProc {
const log = Log.create({ service: "bun" })
@@ -25,11 +26,9 @@ export namespace BunProc {
BUN_BE_BUN: "1",
},
})
- const code = await result.exited
- // @ts-ignore
- const stdout = await result.stdout.text()
- // @ts-ignore
- const stderr = await result.stderr.text()
+ const code = await result.exited;
+ const stdout = result.stdout ? typeof result.stdout === "number" ? result.stdout : await readableStreamToText(result.stdout) : undefined
+ const stderr = result.stderr ? typeof result.stderr === "number" ? result.stderr : await readableStreamToText(result.stderr) : undefined
log.info("done", {
code,
stdout,
@@ -65,7 +64,7 @@ export namespace BunProc {
await BunProc.run(["install", "--registry=https://registry.npmjs.org"], {
cwd: Global.Path.cache,
}).catch((e) => {
- new InstallFailedError(
+ throw new InstallFailedError(
{ pkg, version },
{
cause: e,
diff --git a/packages/opencode/src/index.ts b/packages/opencode/src/index.ts
index 144d6328b..fca13655e 100644
--- a/packages/opencode/src/index.ts
+++ b/packages/opencode/src/index.ts
@@ -67,19 +67,32 @@ const cli = yargs(hideBin(process.argv))
try {
await cli.parse()
} catch (e) {
- const data: Record<string, any> = {}
+ let data: Record<string, any> = {}
if (e instanceof NamedError) {
const obj = e.toObject()
Object.assign(data, {
...obj.data,
})
}
+
if (e instanceof Error) {
Object.assign(data, {
name: e.name,
message: e.message,
cause: e.cause?.toString(),
})
+ }
+
+ if (e instanceof ResolveMessage) {
+ Object.assign(data, {
+ name: e.name,
+ message: e.message,
+ code: e.code,
+ specifier: e.specifier,
+ referrer: e.referrer,
+ position: e.position,
+ importKind: e.importKind,
+ });
}
Log.Default.error("fatal", data)
const formatted = FormatError(e)