summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/scripts
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-22 20:01:16 -0600
committerAdam <[email protected]>2025-12-22 20:01:25 -0600
commit81c3c638953fb7730a6965b3614d57e3c4919dde (patch)
treebea87a6b98078d52dd037da16500b29a28587edc /packages/desktop/scripts
parentb76bd4141dd78db94ab485743b4dc21d918cd85e (diff)
downloadopencode-81c3c638953fb7730a6965b3614d57e3c4919dde.tar.gz
opencode-81c3c638953fb7730a6965b3614d57e3c4919dde.zip
chore: rename packages/tauri -> packages/desktop
Diffstat (limited to 'packages/desktop/scripts')
-rw-r--r--packages/desktop/scripts/copy-bundles.ts12
-rw-r--r--packages/desktop/scripts/predev.ts13
-rwxr-xr-xpackages/desktop/scripts/prepare.ts15
-rw-r--r--packages/desktop/scripts/utils.ts48
4 files changed, 88 insertions, 0 deletions
diff --git a/packages/desktop/scripts/copy-bundles.ts b/packages/desktop/scripts/copy-bundles.ts
new file mode 100644
index 000000000..3fde1c190
--- /dev/null
+++ b/packages/desktop/scripts/copy-bundles.ts
@@ -0,0 +1,12 @@
+import { $ } from "bun"
+import * as path from "node:path"
+
+import { RUST_TARGET } from "./utils"
+
+if (!RUST_TARGET) throw new Error("RUST_TARGET not defined")
+
+const BUNDLE_DIR = `src-tauri/target/${RUST_TARGET}/release/bundle`
+const BUNDLES_OUT_DIR = path.join(process.cwd(), `src-tauri/target/bundles`)
+
+await $`mkdir -p ${BUNDLES_OUT_DIR}`
+await $`cp -r ${BUNDLE_DIR}/*/OpenCode* ${BUNDLES_OUT_DIR}`
diff --git a/packages/desktop/scripts/predev.ts b/packages/desktop/scripts/predev.ts
new file mode 100644
index 000000000..218215197
--- /dev/null
+++ b/packages/desktop/scripts/predev.ts
@@ -0,0 +1,13 @@
+import { $ } from "bun"
+
+import { copyBinaryToSidecarFolder, getCurrentSidecar } from "./utils"
+
+const RUST_TARGET = Bun.env.TAURI_ENV_TARGET_TRIPLE
+
+const sidecarConfig = getCurrentSidecar(RUST_TARGET)
+
+const binaryPath = `../opencode/dist/${sidecarConfig.ocBinary}/bin/opencode`
+
+await $`cd ../opencode && bun run build --single`
+
+await copyBinaryToSidecarFolder(binaryPath, RUST_TARGET)
diff --git a/packages/desktop/scripts/prepare.ts b/packages/desktop/scripts/prepare.ts
new file mode 100755
index 000000000..495a0baea
--- /dev/null
+++ b/packages/desktop/scripts/prepare.ts
@@ -0,0 +1,15 @@
+#!/usr/bin/env bun
+import { $ } from "bun"
+
+import { copyBinaryToSidecarFolder, getCurrentSidecar } from "./utils"
+
+const sidecarConfig = getCurrentSidecar()
+
+const dir = "src-tauri/target/opencode-binaries"
+
+await $`mkdir -p ${dir}`
+await $`gh run download ${Bun.env.GITHUB_RUN_ID} -n opencode-cli`.cwd(dir)
+
+await copyBinaryToSidecarFolder(
+ `${dir}/${sidecarConfig.ocBinary}/bin/opencode${process.platform === "win32" ? ".exe" : ""}`,
+)
diff --git a/packages/desktop/scripts/utils.ts b/packages/desktop/scripts/utils.ts
new file mode 100644
index 000000000..885d0afce
--- /dev/null
+++ b/packages/desktop/scripts/utils.ts
@@ -0,0 +1,48 @@
+import { $ } from "bun"
+
+export const SIDECAR_BINARIES: Array<{ rustTarget: string; ocBinary: string; assetExt: string }> = [
+ {
+ rustTarget: "aarch64-apple-darwin",
+ ocBinary: "opencode-darwin-arm64",
+ assetExt: "zip",
+ },
+ {
+ rustTarget: "x86_64-apple-darwin",
+ ocBinary: "opencode-darwin-x64",
+ assetExt: "zip",
+ },
+ {
+ rustTarget: "x86_64-pc-windows-msvc",
+ ocBinary: "opencode-windows-x64",
+ assetExt: "zip",
+ },
+ {
+ rustTarget: "x86_64-unknown-linux-gnu",
+ ocBinary: "opencode-linux-x64",
+ assetExt: "tar.gz",
+ },
+ {
+ rustTarget: "aarch64-unknown-linux-gnu",
+ ocBinary: "opencode-linux-arm64",
+ assetExt: "tar.gz",
+ },
+]
+
+export const RUST_TARGET = Bun.env.RUST_TARGET
+
+export function getCurrentSidecar(target = RUST_TARGET) {
+ if (!target && !RUST_TARGET) throw new Error("RUST_TARGET not set")
+
+ const binaryConfig = SIDECAR_BINARIES.find((b) => b.rustTarget === target)
+ if (!binaryConfig) throw new Error(`Sidecar configuration not available for Rust target '${RUST_TARGET}'`)
+
+ return binaryConfig
+}
+
+export async function copyBinaryToSidecarFolder(source: string, target = RUST_TARGET) {
+ await $`mkdir -p src-tauri/sidecars`
+ const dest = `src-tauri/sidecars/opencode-cli-${target}${process.platform === "win32" ? ".exe" : ""}`
+ await $`cp ${source} ${dest}`
+
+ console.log(`Copied ${source} to ${dest}`)
+}