# 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')

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

  # Install from package directory to create local node_modules with workspace symlinks
  cd packages/opencode
  bun install

  # 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"
}
