# Maintainer: dax # Maintainer: adam pkgname='opencode' pkgver=1.0.55 _subver= options=('!debug' '!strip') pkgrel=1 pkgdesc='The AI coding agent built for the terminal.' url='https://github.com/sst/opencode' arch=('aarch64' 'x86_64') license=('MIT') provides=('opencode') conflicts=('opencode-bin') depends=('fzf' 'ripgrep') makedepends=('git' 'bun-bin' 'go' 'npm') source=("opencode-${pkgver}.tar.gz::https://github.com/sst/opencode/archive/v${pkgver}${_subver}.tar.gz") sha256sums=('3db64a1cd6f0b1163e50092aeac73ba21144d8bacbe52c70b1493ba2e52dd05b') prepare() { cd "opencode-${pkgver}" # Patch package.json to accept bun 1.3.2 instead of locked 1.3.1 sed -i 's/"packageManager": "bun@1\.3\.1"/"packageManager": "bun@1.3.2"/' package.json } build() { cd "opencode-${pkgver}" # Ensure npm is in PATH for bun's shell export PATH="/usr/bin:$PATH" # Install workspace dependencies from root bun install # The build script uses relative imports like ../node_modules/... # Create symlink so packages/opencode/node_modules points to root node_modules cd packages/opencode ln -sf ../../node_modules node_modules # Build the binary OPENCODE_CHANNEL=latest OPENCODE_VERSION=${pkgver} bun run build --single } package() { cd "opencode-${pkgver}/packages/opencode" # Determine architecture for the binary path case "${CARCH}" in x86_64) _arch="x64" ;; aarch64) _arch="arm64" ;; esac install -Dm755 "./dist/opencode-linux-${_arch}/bin/opencode" "${pkgdir}/usr/bin/opencode" }