diff options
Diffstat (limited to 'packages/desktop/scripts')
| -rw-r--r-- | packages/desktop/scripts/copy-bundles.ts | 12 | ||||
| -rw-r--r-- | packages/desktop/scripts/predev.ts | 13 | ||||
| -rwxr-xr-x | packages/desktop/scripts/prepare.ts | 15 | ||||
| -rw-r--r-- | packages/desktop/scripts/utils.ts | 48 |
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}`) +} |
