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

_realname=ty
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=0.0.17
_ruffver=10c082f616d8296df0cd3489a98db8c5d40628d1
pkgrel=1
pkgdesc="An extremely fast Python type checker and language server, written in Rust (mingw-w64)"
arch=('any')
mingw_arch=('ucrt64' 'clang64' 'clangarm64')
url='https://github.com/astral-sh/ty'
msys2_repository_url='https://github.com/astral-sh/ty'
msys2_documentation_url='https://docs.astral.sh/ty'
license=('spdx:MIT')
depends=("${MINGW_PACKAGE_PREFIX}-python")
makedepends=("${MINGW_PACKAGE_PREFIX}-rust"
             "${MINGW_PACKAGE_PREFIX}-maturin"
             "${MINGW_PACKAGE_PREFIX}-python-installer"
             'git')
options=('!strip')
source=("git+${url}#tag=${pkgver}"
        "git+https://github.com/astral-sh/ruff#commit=${_ruffver}")
sha256sums=('7fd87009208ef7a63159033798cebec1cc24e015445124e4bbdccd01b95964f4'
            '60c4adfd4626e13dfb2463d108da1c509f5648e99dbc57d851839320fb870ea0')

prepare() {
  cd ${_realname}

  git submodule init
  git config submodule.ruff.url ../ruff
  git -c protocol.file.allow=always submodule update

  cargo fetch \
    --manifest-path ruff/crates/${_realname}/Cargo.toml \
    --locked \
    --target "${RUST_CHOST}" \
    --config='net.git-fetch-with-cli=true'
}

build() {
  local target_binary="ruff/target/${RUST_CHOST}/release/${_realname}"

  cd ${_realname}
  export _PYTHON_HOST_PLATFORM=$(python -c "import sysconfig, sys; sys.stdout.write(sysconfig.get_platform())")
  maturin build --locked --release --all-features --target "${RUST_CHOST}" --strip

  for completion in bash fish zsh; do
    $target_binary generate-shell-completion $completion > $completion-completions
  done
}

check() {
  cd ${_realname}

  cargo test \
    --manifest-path ruff/crates/${_realname}/Cargo.toml \
    --frozen \
    --release \
    --all-features
}

package() {
  cd ${_realname}

  MSYS2_ARG_CONV_EXCL="--prefix=" \
    python -m installer --prefix=${MINGW_PREFIX} \
    --destdir="${pkgdir}" ruff/target/wheels/*.whl

  install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}"/share/licenses/${_realname}/LICENSE
  install -Dm644 bash-completions "${pkgdir}${MINGW_PREFIX}"/share/bash-completion/completions/${_realname}
  install -Dm644 fish-completions "${pkgdir}${MINGW_PREFIX}"/share/fish/vendor_completions.d/${_realname}.fish
  install -Dm644 zsh-completions "${pkgdir}${MINGW_PREFIX}"/share/zsh/site-functions/_${_realname}
}
