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

_realname=ty
pkgbase=mingw-w64-${_realname}
pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}"
pkgver=0.0.12
_ruffver=b79e9bac14976608c7cc6970e45627926d4d78ef
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_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=('e97db6f24598d6c4537b4bc41c14d79db516ab87f2d9a8ddbe7b19bbb832c435'
            '2ead997f1bb43391373a809f75f0e25f54069cf8b4bbdf8d8a6b3c7bd660ebe6')

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