# Maintainer: Konstantin Podsvirov <konstantin@podsvirov.su>

_realname=wasm-pack
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
         "${MINGW_PACKAGE_PREFIX}-${_realname}-docs")
pkgver=0.14.0
pkgrel=1
pkgdesc='Your favorite rust -> wasm workflow tool! (mingw-w64)'
arch=('any')
mingw_arch=('ucrt64' 'clang64' 'clangarm64')
url='https://drager.github.io/wasm-pack/'
msys2_repository_url='https://github.com/drager/wasm-pack'
msys2_references=(
  'archlinux: wasm-pack'
  'purl: pkg:cargo/wasm-pack'
)
license=('spdx:MIT OR Apache-2.0')
depends=(
  "${MINGW_PACKAGE_PREFIX}-rust-wasm"
  "${MINGW_PACKAGE_PREFIX}-bzip2"
  "${MINGW_PACKAGE_PREFIX}-zstd"
)
makedepends=(
  "${MINGW_PACKAGE_PREFIX}-mdbook"
  "${MINGW_PACKAGE_PREFIX}-pkgconf"
  "${MINGW_PACKAGE_PREFIX}-cmake"
)
source=("${msys2_repository_url}/archive/v${pkgver}/${_realname}-${pkgver}.tar.gz"
        'zstd-sys.tar.gz::https://crates.io/api/v1/crates/zstd-sys/2.0.16+zstd.1.5.7/download'
        'bzip2-sys.tar.gz::https://crates.io/api/v1/crates/bzip2-sys/0.1.13+1.0.8/download'
        'zstd-sys-remove-statik.patch'
        'bzip2-use-pkgconfig.patch')
sha256sums=('60e866ce851219b18b7e16b2dbcd8323d5af0eac7d3a8a616bec3bd62fc051c4'
            '91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748'
            '225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14'
            '48f4900ceb02d3aaf9a1020f33d56629156e96759f456c0e7ca18bfcf910767b'
            'f73309fb98b89b2085bccee6ffb66820082628d096bc989922b25d33a1f5f378')

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

  patch -d ../bzip2-sys-0.1.13+1.0.8 -i ../bzip2-use-pkgconfig.patch
  patch -d ../zstd-sys-2.0.16+zstd.1.5.7 -i ../zstd-sys-remove-statik.patch
  cat >> Cargo.toml <<END

[patch.crates-io]
bzip2-sys.path = "../bzip2-sys-0.1.13+1.0.8"
zstd-sys.path = "../zstd-sys-2.0.16+zstd.1.5.7"
END

  cargo update -p bzip2-sys -p zstd-sys
  cargo fetch --locked --target "${RUST_CHOST}"
}

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

  export ZSTD_SYS_USE_PKG_CONFIG=1
  cargo build --release --frozen

  cd docs
  mdbook build
}

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

  export ZSTD_SYS_USE_PKG_CONFIG=1
  cargo test --release --frozen
}

package_wasm-pack() {
  cd "${_realname}-${pkgver}"

  install -Dm755 "target/release/wasm-pack.exe" "${pkgdir}${MINGW_PREFIX}/bin/wasm-pack.exe"
  install -Dm644 -t "${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/" LICENSE-{APACHE,MIT}
}

package_wasm-pack-docs() {
  pkgdesc+=" (Documentation)"
  depends=()

  cd "${_realname}-${pkgver}"

  install -d "${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/html/"
  cp -r -t "${pkgdir}${MINGW_PREFIX}/share/doc/${_realname}/html/" docs/book/*
}

# 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
