# Maintainer: Maksim Bondarenkov <maksapple2306@gmail.com>

_realname=zed
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=0.136.2
pkgrel=1
pkgdesc="A high-performance, multiplayer code editor (mingw-w64)"
arch=('any')
mingw_arch=('ucrt64')
url='https://github.com/zed-industries/zed'
license=('spdx:AGPL-3.0-or-later AND Apache-2.0 AND GPL-3.0-or-later')
depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
         "${MINGW_PACKAGE_PREFIX}-libgit2"
         "${MINGW_PACKAGE_PREFIX}-curl"
         "${MINGW_PACKAGE_PREFIX}-zstd")
makedepends=("${MINGW_PACKAGE_PREFIX}-rust"
             "${MINGW_PACKAGE_PREFIX}-lld"
             "${MINGW_PACKAGE_PREFIX}-pkgconf"
             "${MINGW_PACKAGE_PREFIX}-fontconfig"
             "${MINGW_PACKAGE_PREFIX}-openssl"
             "${MINGW_PACKAGE_PREFIX}-sqlite3"
             'git')
_commit=8629a076a74756af9737e4e07c7523e43f6b3697
source=("https://github.com/zed-industries/zed/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz"
        "001-download-pc-windows-gnu-assets.patch"
        "002-link-sys-libs-dynamically.patch")
sha256sums=('caf4f16fcc8490fc220a507d2287cfac6a84041c03bd9f51b5b4f63f0704737e'
            '7833a245a982a6d23e16c71e2f7995461c1d0c869aeb6c94108f0f011d90d2ff'
            '47c9c44b7681d5a013f3a5a2be72abb5a68c13b0c9c070470b97c23097ce3a49')
noextract=("${_realname}-${pkgver}.tar.gz")

prepare() {
  tar -xzf "${_realname}-${pkgver}.tar.gz" || true
  cd "${srcdir}/${_realname}-${pkgver}"

  rm -f rust-toolchain.toml

  patch -Np1 -i "${srcdir}/001-download-pc-windows-gnu-assets.patch"
  patch -Np1 -i "${srcdir}/002-link-sys-libs-dynamically.patch"

  cargo fetch --locked --target "$(rustc -vV | sed -n 's/host: //p')"
}

_env() {
  export OPENSSL_NO_VENDOR=1
  export LIBGIT2_NO_VENDOR=1
  export PKG_CONFIG_ALL_DYNAMIC=1
  export ZSTD_SYS_USE_PKG_CONFIG=1
  export WINAPI_NO_BUNDLED_LIBRARIES=1
  export LIBSQLITE3_SYS_USE_PKG_CONFIG=1
  if [[ $MINGW_PACKAGE_PREFIX != *-clang-* ]]; then
    export RUSTFLAGS="-Clink-arg=-fuse-ld=lld"
  fi
}

build() {
  cd "${srcdir}/${_realname}-${pkgver}"

  _env
  # remove a werror from gcc 14
  if [[ $MINGW_PACKAGE_PREFIX != *-clang-* ]]; then
    export CFLAGS+=" -Wno-incompatible-pointer-types"
    export CXXFLAGS+=" -Wno-incompatible-pointer-types"
  fi

  cargo build --release --frozen -p zed
}

check() {
  cd "${srcdir}/${_realname}-${pkgver}-pre"

  _env
  cargo test --release --frozen -p zed
}

package() {
  cd "${srcdir}/${_realname}-${pkgver}"

  _env
  cargo install \
    --frozen \
    --offline \
    --no-track \
    --path crates/zed \
    --root "${pkgdir}${MINGW_PREFIX}"

  # rename the binary
  mv "${pkgdir}${MINGW_PREFIX}/bin/Zed" "${pkgdir}${MINGW_PREFIX}/bin/zed"
  install -Dm644 LICENSE-{AGPL,APACHE,GPL} -t "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/"
}
