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

_realname=alacritty
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=0.13.1
pkgrel=1
pkgdesc="A cross-platform, OpenGL terminal emulator (mingw-w64)"
arch=('any')
mingw_arch=('mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://alacritty.org"
msys2_repository_url="https://github.com/alacritty/alacritty"
license=('spdx:Apache-2.0 OR MIT')
msys2_references=(
  'archlinux: alacritty'
)
makedepends=("${MINGW_PACKAGE_PREFIX}-rust"
             "${MINGW_PACKAGE_PREFIX}-cmake"
             "${MINGW_PACKAGE_PREFIX}-ncurses"
             "${MINGW_PACKAGE_PREFIX}-desktop-file-utils"
             "${MINGW_PACKAGE_PREFIX}-scdoc")
depends=("${MINGW_PACKAGE_PREFIX}-freetype"
         "${MINGW_PACKAGE_PREFIX}-fontconfig")
checkdepends=("${MINGW_PACKAGE_PREFIX}-ttf-dejavu")
optdepends=("${MINGW_PACKAGE_PREFIX}-ncurses: for alacritty terminfo database")
source=("https://github.com/alacritty/alacritty/archive/refs/tags/v${pkgver}/${_realname}-${pkgver}.tar.gz")
validpgpkeys=('4DAA67A9EA8B91FCC15B699C85CDAE3C164BA7B4'  # Christian Dürr <contact@christianduerr.com>
              'A56EF308A9F1256C25ACA3807EA8F8B94622A6A9') # Kirill Chibisov <contact@kchibisov.com>
sha256sums=('38a42e23e1e6faaa9e300347df3f7b58b6182908a701517aac6e296fbdf37451')
noextract=("${_realname}-${pkgver}.tar.gz")

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

  local _target="${CARCH}-pc-windows-gnu"
  if [[ $MINGW_PACKAGE_PREFIX == *-clang-aarch64 ]]; then
    _target="${CARCH}-pc-windows-gnullvm"
  fi
  cargo fetch --locked --target "${_target}"
}

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

  WINAPI_NO_BUNDLED_LIBRARIES=1 \
    "${MINGW_PREFIX}/bin/cargo.exe" build \
    --release \
    --locked

  scdoc < "extra/man/${_realname}.1.scd" | gzip > "${_realname}.1.gz"
  scdoc < "extra/man/${_realname}-msg.1.scd" | gzip > "${_realname}-msg.1.gz"
  scdoc < "extra/man/${_realname}.5.scd" | gzip > "${_realname}.5.gz"
  scdoc < "extra/man/${_realname}-bindings.5.scd" | gzip > "${_realname}-bindings.5.gz"
}

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

  WINAPI_NO_BUNDLED_LIBRARIES=1 \
  "${MINGW_PREFIX}/bin/cargo.exe" test \
    --release \
    --locked
}

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

  install -Dm755 "target/release/${_realname}.exe" "${pkgdir}${MINGW_PREFIX}/bin/${_realname}.exe"
  install -Dm644 alacritty{,-msg}.1.gz -t "${pkgdir}${MINGW_PREFIX}/share/man/man1/"
  install -Dm644 alacritty{,-bindings}.5.gz -t "${pkgdir}${MINGW_PREFIX}/share/man/man5/"
  install -Dm644 "extra/completions/alacritty.bash" "${pkgdir}${MINGW_PREFIX}/share/bash-completion/completions/alacritty"
  install -Dm644 "extra/completions/_alacritty" "${pkgdir}${MINGW_PREFIX}/share/zsh/site-functions/_alacritty"
  install -Dm644 "extra/completions/alacritty.fish" "${pkgdir}${MINGW_PREFIX}/share/fish/vendor_completions.d/alacritty.fish"
  install -Dm644 "extra/logo/alacritty-term.svg" "${pkgdir}${MINGW_PREFIX}/share/pixmaps/Alacritty.svg"
}
