|
@@ -79,16 +79,48 @@ export namespace BunProc {
|
|
|
version,
|
|
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
|
|
parsed.dependencies[pkg] = version
|
|
|
await Bun.write(pkgjson.name!, JSON.stringify(parsed, null, 2))
|
|
await Bun.write(pkgjson.name!, JSON.stringify(parsed, null, 2))
|
|
|
return mod
|
|
return mod
|