# Maintainer: funman300 <funman300@gmail.com>

pkgname=ferrous-solitaire-server
pkgver=0.1.0
pkgrel=1
pkgdesc='Self-hosted sync server for Ferrous Solitaire (stats, achievements, leaderboards)'
url='https://github.com/funman300/ferrous-solitaire'
license=('MIT')
arch=('x86_64')
makedepends=('cargo' 'rust')
depends=(
    'gcc-libs'
    'glibc'
)
backup=('etc/ferrous-solitaire-server/server.env')

# Build from the local workspace (two levels above this PKGBUILD).
_srcdir="$startdir/../.."
source=(
    'ferrous-solitaire-server.service'
    'server.env'
)
b2sums=('SKIP'
        'SKIP')

prepare() {
    export RUSTUP_TOOLCHAIN=stable
    cd "$_srcdir"
    cargo fetch --locked --target "$(rustc -Vv | grep host | cut -d' ' -f2)"
}

build() {
    export RUSTUP_TOOLCHAIN=stable
    export CARGO_TARGET_DIR=target
    cd "$_srcdir"
    cargo build --frozen --release -p solitaire_server
}

check() {
    export RUSTUP_TOOLCHAIN=stable
    cd "$_srcdir"
    cargo test --frozen -p solitaire_server -p solitaire_sync
}

package() {
    cd "$_srcdir"

    # Binary
    install -Dm0755 -t "$pkgdir/usr/bin/" "target/release/solitaire_server"

    # systemd service
    install -Dm0644 "$srcdir/ferrous-solitaire-server.service" \
        "$pkgdir/usr/lib/systemd/system/ferrous-solitaire-server.service"

    # Environment file (contains JWT_SECRET, DATABASE_URL, SERVER_PORT)
    install -Dm0640 "$srcdir/server.env" \
        "$pkgdir/etc/ferrous-solitaire-server/server.env"

    # License and docs
    install -Dm0644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
    install -Dm0644 README_SERVER.md \
        "$pkgdir/usr/share/doc/$pkgname/README_SERVER.md"
}
