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

_realname=rustfs
pkgbase=mingw-w64-${_realname}
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}")
_pkgver=1.0.0-alpha.83
pkgver=${_pkgver//-/_}
_consolever=0.1.3
pkgrel=1
pkgdesc="High-performance, memory-safe distributed object storage (mingw-w64)"
arch=('any')
mingw_arch=('ucrt64' 'clang64' 'clangarm64')
url='https://rustfs.com/'
msys2_repository_url='https://github.com/rustfs'
msys2_references=(
  "cpe: cpe:/a:rustfs:rustfs"
)
license=('spdx:Apache-2.0')
makedepends=(
  "${MINGW_PACKAGE_PREFIX}-rust"
  "${MINGW_PACKAGE_PREFIX}-cc"
  "${MINGW_PACKAGE_PREFIX}-cmake"
  "${MINGW_PACKAGE_PREFIX}-nasm"
  "${MINGW_PACKAGE_PREFIX}-ninja"
  "${MINGW_PACKAGE_PREFIX}-pkgconf"
  "${MINGW_PACKAGE_PREFIX}-rust-bindgen"
  "${MINGW_PACKAGE_PREFIX}-openssl"
  "${MINGW_PACKAGE_PREFIX}-flatbuffers"
  "${MINGW_PACKAGE_PREFIX}-protobuf"
  'git'
  'unzip'
)
source=(
  "${msys2_repository_url}/rustfs/archive/${_pkgver}/rustfs-${_pkgver}.tar.gz"
  "${msys2_repository_url}/console/releases/download/v${_consolever}/rustfs-console-v${_consolever}.zip"
)
noextract=("rustfs-${_pkgver}.tar.gz"
           "rustfs-console-v${_consolever}.zip")
sha256sums=('07d8424b1e4bffe44049880ad31a28a33bbd49fe0cbeb5c2dc604c8f2a19b10d'
            '4900b8cf1077c239eb405a57d87e7d0bb3b3181191e264f84a9ef28bad6d5f88')

prepare() {
  echo "Extracting ${_realname}-${_pkgver}.tar.gz ..."
  tar -xzf ${_realname}-${_pkgver}.tar.gz || true

  cd "${_realname}-${_pkgver}"

  echo "Extracting ${_realname}-console-v${_consolever}.zip ..."
  unzip -o -q "${srcdir}/rustfs-console-v${_consolever}.zip" \
    -d rustfs/static

  export RUSTUP_TOOLCHAIN=stable-${RUST_CHOST}

  rm rust-toolchain.toml

  cargo fetch \
    --locked \
    --config='net.git-fetch-with-cli=true' \
    --target "${RUST_CHOST}"
}

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

  export RUSTUP_TOOLCHAIN=stable-${RUST_CHOST}

  # Generate protobuf/flatbuffers code (uses protoc/flatc from distro)
  cargo run --release --frozen --bin gproto

  # Build RustFS
  cargo build --release --frozen -p rustfs --bins
}

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

  install -Dm755 target/release/rustfs.exe -t "${pkgdir}${MINGW_PREFIX}/bin/"

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