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

_realname=atuin
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
         "${MINGW_PACKAGE_PREFIX}-${_realname}-server")
pkgver=18.12.1
pkgrel=1
pkgdesc="Magical shell history (mingw-w64)"
arch=('any')
mingw_arch=('ucrt64' 'clang64' 'clangarm64')
url='https://github.com/atuinsh/atuin'
msys2_repository_url='https://github.com/atuinsh/atuin'
license=('spdx:MIT')
makedepends=("${MINGW_PACKAGE_PREFIX}-rust"
             'git')
source=("git+${url}#tag=v${pkgver}")
sha256sums=('82fdaaedcc856e19c201aaf6fdb03c8a0cb3b4364ab32f3b369f09f36ed8f3c6')

prepare() {
  cd "${_realname}"

  cargo fetch --locked --target "${RUST_CHOST}"
}

build() {
  cd "${_realname}"

  cargo build \
    --release \
    --frozen \
    -p atuin \
    -p atuin-server \
    --no-default-features \
    --features client,sync,daemon,clipboard
}

check() {
  cd "${_realname}"

  cargo test \
    --release \
    --frozen \
    -p atuin \
    -p atuin-server \
    --no-default-features \
    --features client,sync,daemon,clipboard
}

package_atuin() {
  optdepends=("${MINGW_PACKAGE_PREFIX}-${_realname}-server: sync server"
              'bash-preexec: bash integration')

  cd "${_realname}"

  install -Dm755 target/release/atuin "${pkgdir}${MINGW_PREFIX}/bin/atuin"

  local _complete="target/release/atuin gen-completions -s"
  install -Dm644 <($_complete bash) "${pkgdir}${MINGW_PREFIX}/share/bash-completion/completions/${_realname}"
  install -Dm644 <($_complete fish) "${pkgdir}${MINGW_PREFIX}/share/fish/vendor_completions.d/${_realname}.fish"
  install -Dm644 <($_complete zsh) "${pkgdir}${MINGW_PREFIX}/share/zsh/site-functions/_${_realname}"

  install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE"
}

package_atuin-server() {
  pkgdesc+=" (Sync server)"
  depends=("${MINGW_PACKAGE_PREFIX}-atuin")
  optdepends=("${MINGW_PACKAGE_PREFIX}-postgresql: server database")

  cd "${_realname}"

  install -Dm755 target/release/atuin-server "${pkgdir}${MINGW_PREFIX}/bin/atuin-server"

  install -Dm0644 crates/atuin-server/server.toml "${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}-server/server.toml"
  install -Dm644 LICENSE "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}-server/LICENSE"
}

# vim: set ft=bash :

# generate wrappers
for _name in "${pkgname[@]}"; do
  _short="package_${_name#${MINGW_PACKAGE_PREFIX}-}"
  _func="$(declare -f "${_short}")"
  eval "${_func/#${_short}/package_${_name}}"
done
