summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorHarsh Sharma <[email protected]>2026-02-10 09:48:57 +0530
committerGitHub <[email protected]>2026-02-09 22:18:57 -0600
commit56a752092e78043258372ec7ff5b38c7fe8e622c (patch)
tree822bc90823ad8d98bea05a1ea57bd21522557e51
parent439e7ec1fd07ade8910dab37ed767df6623d7059 (diff)
downloadopencode-56a752092e78043258372ec7ff5b38c7fe8e622c.tar.gz
opencode-56a752092e78043258372ec7ff5b38c7fe8e622c.zip
fix: resolve homebrew upgrade requiring multiple runs (#5375) (#10118)
-rw-r--r--packages/opencode/src/installation/index.ts29
1 files changed, 22 insertions, 7 deletions
diff --git a/packages/opencode/src/installation/index.ts b/packages/opencode/src/installation/index.ts
index d18c9e31a..47278bd56 100644
--- a/packages/opencode/src/installation/index.ts
+++ b/packages/opencode/src/installation/index.ts
@@ -148,6 +148,16 @@ export namespace Installation {
break
case "brew": {
const formula = await getBrewFormula()
+ if (formula.includes("/")) {
+ cmd =
+ $`brew tap anomalyco/tap && cd "$(brew --repo anomalyco/tap)" && git pull --ff-only && brew upgrade ${formula}`.env(
+ {
+ HOMEBREW_NO_AUTO_UPDATE: "1",
+ ...process.env,
+ },
+ )
+ break
+ }
cmd = $`brew upgrade ${formula}`.env({
HOMEBREW_NO_AUTO_UPDATE: "1",
...process.env,
@@ -188,14 +198,19 @@ export namespace Installation {
if (detectedMethod === "brew") {
const formula = await getBrewFormula()
- if (formula === "opencode") {
- return fetch("https://formulae.brew.sh/api/formula/opencode.json")
- .then((res) => {
- if (!res.ok) throw new Error(res.statusText)
- return res.json()
- })
- .then((data: any) => data.versions.stable)
+ if (formula.includes("/")) {
+ const infoJson = await $`brew info --json=v2 ${formula}`.quiet().text()
+ const info = JSON.parse(infoJson)
+ const version = info.formulae?.[0]?.versions?.stable
+ if (!version) throw new Error(`Could not detect version for tap formula: ${formula}`)
+ return version
}
+ return fetch("https://formulae.brew.sh/api/formula/opencode.json")
+ .then((res) => {
+ if (!res.ok) throw new Error(res.statusText)
+ return res.json()
+ })
+ .then((data: any) => data.versions.stable)
}
if (detectedMethod === "npm" || detectedMethod === "bun" || detectedMethod === "pnpm") {