# Maintainer: Gilrain <gilrain+libre.arch A_T castelmo DOT_ re>
# Contributor: Lucki

pkgbase=asf
pkgname=('asf-plugin-steamtokendumper'
  'asf-plugin-itemsmatcher'
  'asf-plugin-mobileauthenticator'
  'asf-plugin-monitoring'
  'asf-plugin-periodicgc'
  'asf-plugin-signinwithsteam'
  'asf')
pkgver="6.3.7.0"
pkgrel=1
arch=('x86_64' 'armv7h' 'aarch64')
url="https://github.com/JustArchiNET/ArchiSteamFarm"
license=('Apache-2.0')
makedepends=('git' 'dotnet-sdk>=10' 'aspnet-runtime>=10')
changelog=changelog
install=asf.install
source=("asf::git+https://github.com/JustArchiNET/ArchiSteamFarm.git#tag=${pkgver}?signed"
  "service.patch"
  "asf.env"
  "ASF.json"
  "NLog.config")
validpgpkeys=('1268A81616AFDC20C55779ED6B138B4C64555AEA')
sha256sums=('b6f4178ea6ce990dc1603606d55eece81d7a1307eeea4a2060dbfb5fb4b9fa18'
  '1728ccf7d02974b779ec794df400fec57b9a98869d319bea7f98d6c1ce4a9d3e'
  'ec82f54a9b362e2305a775eb1473522636ab724f18d846828410c39344801db4'
  'c300c5ce63c0237d7558b5b303159b8e2a8e5323f581cc8435dd2a6f1ead5332'
  '3f84136fda8fb2def850f2aca1fd4535f85488273dd8b0737e60fd6febb41b00')

prepare() {
  cd ${srcdir}/asf/ArchiSteamFarm/overlay/variant-base/linux
  patch --forward --input="${srcdir}/service.patch"
}

build() {
  cd asf

  # disable dotnet telemetry
  export DOTNET_CLI_TELEMETRY_OPTOUT=1
  export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
  export DOTNET_NOLOGO=1

  [[ "$CARCH" == "x86_64" ]] && architecture="x64"
  [[ "$CARCH" == "armv7h" ]] && architecture="arm"
  [[ "$CARCH" == "aarch64" ]] && architecture="arm64"
  export DOTNET_FLAGS="--configuration Release -p:UseAppHost=false --nologo"
  export PUBLISH_FLAGS="--runtime linux-"${architecture}" --no-self-contained"
  dotnet publish "ArchiSteamFarm" -o "out/result" $DOTNET_FLAGS $PUBLISH_FLAGS
  dotnet publish "ArchiSteamFarm.OfficialPlugins.ItemsMatcher" -o "out/result/plugins/ArchiSteamFarm.OfficialPlugins.ItemsMatcher" $DOTNET_FLAGS $PUBLISH_FLAGS
  dotnet publish "ArchiSteamFarm.OfficialPlugins.SteamTokenDumper" -o "out/result/plugins/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper" $DOTNET_FLAGS $PUBLISH_FLAGS
  dotnet publish "ArchiSteamFarm.OfficialPlugins.MobileAuthenticator" -o "out/result/plugins/ArchiSteamFarm.OfficialPlugins.MobileAuthenticator" $DOTNET_FLAGS $PUBLISH_FLAGS
  dotnet publish "ArchiSteamFarm.OfficialPlugins.Monitoring" -o "out/result/plugins/ArchiSteamFarm.OfficialPlugins.Monitoring" $DOTNET_FLAGS $PUBLISH_FLAGS
  dotnet publish "ArchiSteamFarm.CustomPlugins.PeriodicGC" -o "out/result/plugins/ArchiSteamFarm.CustomPlugins.PeriodicGC" $DOTNET_FLAGS $PUBLISH_FLAGS
  dotnet publish "ArchiSteamFarm.CustomPlugins.SignInWithSteam" -o "out/result/plugins/ArchiSteamFarm.CustomPlugins.SignInWithSteam" $DOTNET_FLAGS $PUBLISH_FLAGS
}

check() {
  cd asf
  dotnet test ArchiSteamFarm.Tests --filter TestCategory!=Manual $DOTNET_FLAGS
}

package_asf-plugin-steamtokendumper() {
  pkgdesc="SteamTokenDumper plugin for ArchiSteamFarm."
  depends=('asf')

  install -d -m 755 ${pkgdir}/usr/lib/asf/plugins/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper
  mv asf/out/result/plugins/ArchiSteamFarm.OfficialPlugins.SteamTokenDumper "${pkgdir}/usr/lib/asf/plugins/"
}

package_asf-plugin-itemsmatcher() {
  pkgdesc="ItemsMatcher plugin for ArchiSteamFarm."
  depends=('asf')

  install -d -m 755 ${pkgdir}/usr/lib/asf/plugins/ArchiSteamFarm.OfficialPlugins.ItemsMatcher
  mv asf/out/result/plugins/ArchiSteamFarm.OfficialPlugins.ItemsMatcher "${pkgdir}/usr/lib/asf/plugins/"
}

package_asf-plugin-mobileauthenticator() {
  pkgdesc="MobileAuthenticator plugin for ArchiSteamFarm."
  depends=('asf')

  install -d -m 755 ${pkgdir}/usr/lib/asf/plugins/ArchiSteamFarm.OfficialPlugins.MobileAuthenticator
  mv asf/out/result/plugins/ArchiSteamFarm.OfficialPlugins.MobileAuthenticator "${pkgdir}/usr/lib/asf/plugins/"
}

package_asf-plugin-monitoring() {
  pkgdesc="Monitoring plugin for ArchiSteamFarm."
  depends=('asf')

  install -d -m 755 ${pkgdir}/usr/lib/asf/plugins/ArchiSteamFarm.OfficialPlugins.Monitoring
  mv asf/out/result/plugins/ArchiSteamFarm.OfficialPlugins.Monitoring "${pkgdir}/usr/lib/asf/plugins/"
}

package_asf-plugin-periodicgc() {
  pkgdesc="PeriodicGC plugin for ArchiSteamFarm."
  depends=('asf')

  install -d -m 755 ${pkgdir}/usr/lib/asf/plugins/ArchiSteamFarm.CustomPlugins.PeriodicGC
  mv asf/out/result/plugins/ArchiSteamFarm.CustomPlugins.PeriodicGC "${pkgdir}/usr/lib/asf/plugins/"
}

package_asf-plugin-signinwithsteam() {
  pkgdesc="SignInWithSteam plugin for ArchiSteamFarm."
  depends=('asf')

  install -d -m 755 ${pkgdir}/usr/lib/asf/plugins/ArchiSteamFarm.CustomPlugins.SignInWithSteam
  mv asf/out/result/plugins/ArchiSteamFarm.CustomPlugins.SignInWithSteam "${pkgdir}/usr/lib/asf/plugins/"
}

package_asf() {
  pkgdesc="Steam cards farmer."
  depends=('aspnet-runtime>=10')
  optdepends=('asf-ui: standalone web interface for ASF'
    'asf-plugin-itemsmatcher'
    'asf-plugin-mobileauthenticator'
    'asf-plugin-steamtokendumper'
    'dbus: prevent suspend while farming')
  backup=('var/lib/asf/config/ASF.json' 'usr/lib/asf/NLog.config')

  cd asf/out/result
  install -d -m 755 "${pkgdir}/usr/lib/${pkgname}"
  cp -rdp --no-preserve=ownership . "${pkgdir}/usr/lib/asf"
  install -D -m755 ../../run.sh "${pkgdir}/usr/bin/${pkgname}"
  sed -i 's,^\(BINARY_DIR[ ]*=\).*,\1'/usr/lib/asf',g' "${pkgdir}/usr/bin/${pkgname}"
  find "${pkgdir}/usr/lib/${pkgname}" -type f -exec chmod 644 {} \;
  find "${pkgdir}/usr/lib/${pkgname}" -type d -exec chmod 755 {} \;

  install -d -m 750 "${pkgdir}/var/lib/${pkgname}/config"
  install -D -m640 "${srcdir}/ASF.json" "${pkgdir}/var/lib/${pkgname}/config/ASF.json"
  install -D -m644 "${srcdir}/NLog.config" "${pkgdir}/usr/lib/${pkgname}/NLog.config"

  install -D -m644 "${srcdir}/asf.env" "${pkgdir}/etc/asf/asf"
  install -D -m644 "${srcdir}/asf/ArchiSteamFarm/overlay/variant-base/linux/ArchiSteamFarm@.service" "${pkgdir}/usr/lib/systemd/system/ArchiSteamFarm@.service"

  # Setup system user and group
  echo 'u asf - "ArchiSteamFarm" /var/lib/asf' \
    | install -Dm644 /dev/stdin "${pkgdir}"/usr/lib/sysusers.d/${pkgname}.conf
  echo -e 'd /var/lib/asf 0750 asf asf -\nd /tmp/ASF 0777 asf asf -' \
    | install -Dm644 /dev/stdin "${pkgdir}"/usr/lib/tmpfiles.d/${pkgname}.conf
}
