2
0
Эх сурвалжийг харах

fix postinstall script for node

Dax Raad 8 сар өмнө
parent
commit
230d0a1510

+ 0 - 0
packages/opencode/script/postinstall.js → packages/opencode/script/postinstall.mjs


+ 2 - 2
packages/opencode/script/publish.ts

@@ -64,7 +64,7 @@ for (const [os, arch] of targets) {
 
 await $`mkdir -p ./dist/${pkg.name}`
 await $`cp -r ./bin ./dist/${pkg.name}/bin`
-await $`cp ./script/postinstall.js ./dist/${pkg.name}/postinstall.js`
+await $`cp ./script/postinstall.mjs ./dist/${pkg.name}/postinstall.mjs`
 await Bun.file(`./dist/${pkg.name}/package.json`).write(
   JSON.stringify(
     {
@@ -73,7 +73,7 @@ await Bun.file(`./dist/${pkg.name}/package.json`).write(
         [pkg.name]: `./bin/${pkg.name}`,
       },
       scripts: {
-        postinstall: "node ./postinstall.js",
+        postinstall: "node ./postinstall.mjs",
       },
       version,
       optionalDependencies,

+ 28 - 20
packages/opencode/src/cli/cmd/upgrade.ts

@@ -122,7 +122,7 @@ export const UpgradeCommand = {
     UI.empty()
     UI.println(UI.logo("  "))
     UI.empty()
-    prompts.intro("upgrade")
+    prompts.intro("Upgrade")
 
     if (!process.execPath.includes(path.join(".opencode", "bin")) && false) {
       prompts.log.error(
@@ -132,10 +132,16 @@ export const UpgradeCommand = {
       return
     }
 
-    const release = args.target ? await specific(args.target) : await latest()
-    const target = release.tag_name
+    const release = args.target
+      ? await specific(args.target).catch(() => {})
+      : await latest().catch(() => {})
+    if (!release) {
+      prompts.log.error("Failed to fetch release information")
+      prompts.outro("Done")
+      return
+    }
 
-    prompts.log.info(`Upgrade ${VERSION} → ${target}`)
+    const target = release.tag_name
 
     if (VERSION !== "dev" && compare(VERSION, target) >= 0) {
       prompts.log.success(`Already up to date`)
@@ -143,6 +149,8 @@ export const UpgradeCommand = {
       return
     }
 
+    prompts.log.info(`From ${VERSION} → ${target}`)
+
     const name = asset()
     const found = release.assets.find((a) => a.name === name)
 
@@ -155,30 +163,30 @@ export const UpgradeCommand = {
     const spinner = prompts.spinner()
     spinner.start("Downloading update...")
 
-    let downloadPath: string
-    try {
-      downloadPath = await download(found.browser_download_url)
-      spinner.stop("Download complete")
-    } catch (downloadError) {
+    const downloadPath = await download(found.browser_download_url).catch(
+      () => {},
+    )
+    if (!downloadPath) {
       spinner.stop("Download failed")
-      prompts.log.error(
-        `Download failed: ${downloadError instanceof Error ? downloadError.message : String(downloadError)}`,
-      )
+      prompts.log.error("Download failed")
       prompts.outro("Done")
       return
     }
 
-    try {
-      await fs.rename(downloadPath, process.execPath)
-      prompts.log.success(`Successfully upgraded to ${target}`)
-    } catch (installError) {
-      prompts.log.error(
-        `Install failed: ${installError instanceof Error ? installError.message : String(installError)}`,
-      )
-      // Clean up downloaded file
+    spinner.stop("Download complete")
+
+    const renamed = await fs
+      .rename(downloadPath, process.execPath)
+      .catch(() => {})
+
+    if (renamed === undefined) {
+      prompts.log.error("Install failed")
       await fs.unlink(downloadPath).catch(() => {})
+      prompts.outro("Done")
+      return
     }
 
+    prompts.log.success(`Successfully upgraded to ${target}`)
     prompts.outro("Done")
   },
 }