# Maintainer: aur.chaotic.cx
# Maintainer: edu4rdshl <edu4rdshl[at]protonmail.com>

_pkgname="openlinkhub"
pkgname="$_pkgname"
pkgver=0.9.0
pkgrel=1
pkgdesc="Open source Linux interface for iCUE LINK Hub and other Corsair AIOs, Hubs."
url="https://github.com/jurkovic-nikola/OpenLinkHub"
license=('GPL-3.0-or-later')
arch=('x86_64')

depends=(
  'i2c-tools'
  'libpipewire'
  'systemd-libs'
)
makedepends=(
  'git'
  'go'
)

backup=(
  "etc/udev/rules.d/99-openlinkhub.rules"
)

_pkgsrc="$_pkgname"
source=(
  "$_pkgsrc"::"git+$url.git#tag=$pkgver"
  "$_pkgname".sysusers
  "$_pkgname".service
  "$_pkgname".tmpfiles
)
sha256sums=(
  '711e3e73b715fd742e232dba6cb11b274377e172bdcbb514a6fa6856bf732a16'
  '8c9f747bc6484290cb97b40e5904dc02cce2672e59e0f6ad720a1cd6a7b9d900'
  '858fd197e13a6bc2756e090f622adcac0d02d20007c366d0dff93258898e256e'
  '70c1d136ed639a84c6aca077df51ff857c32df8db5d74cc7df48f463708bdd0b'
)

pkgver() {
  cd "$_pkgsrc"
  printf "%s" "$(git describe --long --tags --abbrev=7 | sed 's/[-].*$//g')"
}

build() {
  export GOPATH="${srcdir}"
  export CGO_CPPFLAGS="${CPPFLAGS}"
  export CGO_CFLAGS="${CFLAGS}"
  export CGO_CXXFLAGS="${CXXFLAGS}"
  export CGO_LDFLAGS="${LDFLAGS}"
  export GOFLAGS="-buildmode=pie -ldflags=-linkmode=external -trimpath -mod=readonly -modcacherw"
  # Prevents: OpenLinkHub/src/audio: invalid flag in pkg-config --cflags: -fno-strict-overflow (see https://go.dev/s/invalidflag)
  export CGO_CFLAGS_ALLOW='-fno-strict-overflow'

  local _go_options=(
    -ldflags="-X OpenLinkHub/src/version.Version=$pkgver"
  )

  cd "$_pkgsrc"
  go build "${_go_options[@]}" -o "build/$_pkgname"
}

package() {
  mkdir -pm755 "$pkgdir/var/lib/$_pkgname/"{database,static,web,api}

  install -Dm644 "$_pkgname.service" -t "$pkgdir/usr/lib/systemd/system/"
  install -Dm644 "$_pkgname.sysusers" "$pkgdir/usr/lib/sysusers.d/$_pkgname.conf"
  install -Dm644 "$_pkgname.tmpfiles" "$pkgdir/usr/lib/tmpfiles.d/$_pkgname.conf"
  install -Dm644 "$_pkgsrc/99-$_pkgname.rules" -t "$pkgdir/etc/udev/rules.d/"
  install -Dm755 "$_pkgsrc/build/$_pkgname" "$pkgdir/usr/bin/$_pkgname"

  for _dir in database static web api; do
    cp -r "$_pkgsrc/$_dir"/* "$pkgdir/var/lib/$_pkgname/$_dir/"
  done
}
