# Maintainer: Integral <integral@member.fsf.org>
# Contributor: Pylogmon <pylogmon@outlook.com>

pkgname=clash-verge-rev
_pkgname=${pkgname%-rev}
pkgver=2.5.2
_ipc_ver=2.3.3
pkgrel=2
pkgdesc="Continuation of Clash Verge | A Clash Meta GUI based on Tauri"
arch=('x86_64' 'i686' 'aarch64' 'armv7h')
url="https://github.com/${pkgname}/${pkgname}"
license=('GPL-3.0-or-later')
depends=('webkit2gtk-4.1' 'gtk3' 'libayatana-appindicator' 'mihomo')
conflicts=("${_pkgname}")
provides=("${_pkgname}")
makedepends=('pnpm' 'rust' 'jq' 'moreutils')
source=("${pkgname}-${pkgver}.tar.gz::${url}/archive/v${pkgver}.tar.gz"
  "${_pkgname}-service-ipc-${_ipc_ver}.tar.gz::https://github.com/${pkgname}/${_pkgname}-service-ipc/archive/v${_ipc_ver}.tar.gz")
sha512sums=('80c09433a6ac6e4743d9822fd810dc609d92b002ce9aadd13dba3459ee8b09814cf5957be8eb9ffc6066d6fc4f9b3f93468ef431419a0beea845c84bb381e25a'
  'd5d4f977eae9bd9e0d91d632034a93d5fb6d8e069032ba8b6ac83a39157f5ca3b45396b837742325f14c5de4db2e4bea638bbd46b6a7b43b43d2b928ff850d2d')

prepare() {
  pushd "${_pkgname}-service-ipc-${_ipc_ver}/"
  _prepare_service
  popd

  cd "${pkgname}-${pkgver}/"
  jq '.bundle.createUpdaterArtifacts = false' src-tauri/tauri.conf.json | sponge src-tauri/tauri.conf.json
  pnpm i

  cd src-tauri
  cargo fetch --locked --target host-tuple
}

build() {
  pushd "${_pkgname}-service-ipc-${_ipc_ver}/"
  export CFLAGS+=" -ffat-lto-objects"
  export RUSTUP_TOOLCHAIN=stable
  export CARGO_TARGET_DIR=target
  export AWS_LC_SYS_NO_JITTER_ENTROPY=1
  _build_service
  _package_service
  popd

  cd "${pkgname}-${pkgver}/"

  # Use empty files as placeholders
  touch ./src-tauri/sidecar/verge-mihomo{,-alpha}-${CARCH}-unknown-linux-gnu

  pnpm build -b deb
}

package() {
  cp -a ${pkgname}-${pkgver}/src-tauri/target/release/bundle/deb/Clash\ Verge_${pkgver}_*/data/* "${pkgdir}"
  ln -sf /usr/bin/mihomo "${pkgdir}/usr/bin/verge-mihomo"
  ln -sf /usr/bin/mihomo "${pkgdir}/usr/bin/verge-mihomo-alpha"
}

_prepare_service() {
  echo "==> Starting ${FUNCNAME[0]}()..."
  cargo fetch --locked --target host-tuple
}

_build_service() {
  echo "==> Starting ${FUNCNAME[0]}()..."
  cargo build --frozen --release --features standalone
}

_package_service() {
  echo "==> Starting ${FUNCNAME[0]}()..."

  pushd target/release
  local _sidecar_dir="${srcdir}/${pkgname}-${pkgver}/src-tauri/sidecar"
  local _suffix="${CARCH}-unknown-linux-gnu"
  install -Dm755 "${_pkgname}-service" "${_sidecar_dir}/${_pkgname}-service-${_suffix}"
  install -Dm755 "${_pkgname}-service-install" "${_sidecar_dir}/${_pkgname}-service-install-${_suffix}"
  install -Dm755 "${_pkgname}-service-uninstall" "${_sidecar_dir}/${_pkgname}-service-uninstall-${_suffix}"
  popd
}
