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

_realname=zed
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=0.139.3
pkgrel=2
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')
msys2_references=(
  'anitya'
  'archlinux: zed'
  'aur'
  'gentoo'
)
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")
source=("https://github.com/zed-industries/zed/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz"
        "zstd-sys.tar.gz::https://crates.io/api/v1/crates/zstd-sys/2.0.10+zstd.1.5.6/download"
        "curl-sys.tar.gz::https://crates.io/api/v1/crates/curl-sys/0.4.67+curl-8.3.0/download"
        "zed-download-pc-windows-gnu-assets.patch"
        "curl-sys-use-pkgconfig.patch"
        "zstd-sys-remove-statik.patch")
sha256sums=('cd15f80c95ec4c33cbe821ff70e64c3922d1187fa13ac894a8049b615cad2e4f'
            'c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa'
            '3cc35d066510b197a0f72de863736641539957628c8a42e70e27c66849e77c34'
            '94ca0bc7ae6f73bc4cdb9dd02af2946541b2bee7c71f279a4eeef1f987e76fe4'
            '0e008fc69c67a5e79b05815625ffcef2d008e6b5a4bb0350c90772c49d2ca748'
            '48f4900ceb02d3aaf9a1020f33d56629156e96759f456c0e7ca18bfcf910767b')
noextract=("${_realname}-${pkgver}.tar.gz")

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

  rm -f rust-toolchain.toml

  # download assets for x86_64-pc-windows-gnu target for some extensions
  patch -Np1 -i "${srcdir}/zed-download-pc-windows-gnu-assets.patch"
  # link system deps dynamically
  sed -i '/"static-curl"/d' Cargo.toml
  patch -d "../curl-sys-0.4.67+curl-8.3.0" -i "${srcdir}/curl-sys-use-pkgconfig.patch"
  patch -d "../zstd-sys-2.0.10+zstd.1.5.6" -i "${srcdir}/zstd-sys-remove-statik.patch"
  # use patched *-sys crates
  sed -i '/\[patch\.crates-io\]/a curl-sys = { path = "../curl-sys-0.4.67+curl-8.3.0" }\nzstd-sys = { path = "../zstd-sys-2.0.10+zstd.1.5.6" }' Cargo.toml
  cargo update -p curl-sys -p zstd-sys

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

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

  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
  export ZED_UPDATE_EXPLANATION='Updates are handled by pacman'
  if [[ $MINGW_PACKAGE_PREFIX != *-clang-* ]]; then
    export CFLAGS+=" -Wno-incompatible-pointer-types" 
    export CXXFLAGS+=" -Wno-incompatible-pointer-types"
    export RUSTFLAGS="-Clink-arg=-fuse-ld=lld"
  fi

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

check() {
  cd "${_realname}-${pkgver}"

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

package() {
  install -Dm755 "${_realname}-${pkgver}/target/release/Zed" "${pkgdir}${MINGW_PREFIX}/bin/zed"
  install -Dm644 "${_realname}-${pkgver}"/LICENSE-{AGPL,APACHE,GPL} -t "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/"
}
