summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/opencode/src/bun/index.ts52
1 files changed, 42 insertions, 10 deletions
diff --git a/packages/opencode/src/bun/index.ts b/packages/opencode/src/bun/index.ts
index 5f1847275..764be05ab 100644
--- a/packages/opencode/src/bun/index.ts
+++ b/packages/opencode/src/bun/index.ts
@@ -79,16 +79,48 @@ export namespace BunProc {
version,
})
- await BunProc.run(args, {
- cwd: Global.Path.cache,
- }).catch((e) => {
- throw new InstallFailedError(
- { pkg, version },
- {
- cause: e,
- },
- )
- })
+ const total = 3
+ const wait = 500
+
+ const runInstall = async (count: number = 1): Promise<void> => {
+ log.info("bun install attempt", {
+ pkg,
+ version,
+ attempt: count,
+ total,
+ })
+ await BunProc.run(args, {
+ cwd: Global.Path.cache,
+ }).catch(async (error) => {
+ log.warn("bun install failed", {
+ pkg,
+ version,
+ attempt: count,
+ total,
+ error,
+ })
+ if (count >= total) {
+ throw new InstallFailedError(
+ { pkg, version },
+ {
+ cause: error,
+ },
+ )
+ }
+ const delay = wait * count
+ log.info("bun install retrying", {
+ pkg,
+ version,
+ next: count + 1,
+ delay,
+ })
+ await Bun.sleep(delay)
+ return runInstall(count + 1)
+ })
+ }
+
+ await runInstall()
+
parsed.dependencies[pkg] = version
await Bun.write(pkgjson.name!, JSON.stringify(parsed, null, 2))
return mod