Skip to content

Commit 1d9f05e

Browse files
authored
cache platform binary in postinstall for faster startup (#14467)
1 parent 46361cf commit 1d9f05e

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

packages/opencode/bin/opencode

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@ if (envPath) {
2525
const scriptPath = fs.realpathSync(__filename)
2626
const scriptDir = path.dirname(scriptPath)
2727

28+
//
29+
const cached = path.join(scriptDir, ".opencode")
30+
if (fs.existsSync(cached)) {
31+
run(cached)
32+
}
33+
2834
const platformMap = {
2935
darwin: "darwin",
3036
linux: "linux",

packages/opencode/script/postinstall.mjs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,14 @@ async function main() {
109109
// On non-Windows platforms, just verify the binary package exists
110110
// Don't replace the wrapper script - it handles binary execution
111111
const { binaryPath } = findBinary()
112-
console.log(`Platform binary verified at: ${binaryPath}`)
113-
console.log("Wrapper script will handle binary execution")
112+
const target = path.join(__dirname, "bin", ".opencode")
113+
if (fs.existsSync(target)) fs.unlinkSync(target)
114+
try {
115+
fs.linkSync(binaryPath, target)
116+
} catch {
117+
fs.copyFileSync(binaryPath, target)
118+
}
119+
fs.chmodSync(target, 0o755)
114120
} catch (error) {
115121
console.error("Failed to setup opencode binary:", error.message)
116122
process.exit(1)

0 commit comments

Comments
 (0)