#!/bin/bash
# Build Arch Linux Package (.pkg.tar.zst)
# Run on: Arch Linux, Manjaro
# Or in Docker: docker run -v $(pwd):/build archlinux:latest /build/build-arch.sh

set -e

echo "=== Linux Patch API - Arch Build Script ==="
echo ""

# Check if running on Arch
if ! command -v makepkg &> /dev/null; then
    echo "Error: makepkg not found. This script must run on Arch Linux."
    echo "Or use Docker: docker run -v \$(pwd):/build archlinux:latest /build/build-arch.sh"
    exit 1
fi

# Install build dependencies
echo "Installing build dependencies..."
pacman -Syu --noconfirm rust cargo systemd git base-devel

# Build release binary
echo "Building release binary..."
cargo build --release

# Create package directory
PKGDIR=$(pwd)/arch-package
mkdir -p "$PKGDIR"/usr/bin
mkdir -p "$PKGDIR"/etc/linux_patch_api
mkdir -p "$PKGDIR"/usr/lib/systemd/system

# Copy files
cp target/release/linux-patch-api "$PKGDIR"/usr/bin/
chmod 755 "$PKGDIR"/usr/bin/linux-patch-api
cp configs/linux-patch-api.service "$PKGDIR"/usr/lib/systemd/system/
cp configs/config.yaml.example "$PKGDIR"/etc/linux_patch_api/config.yaml
cp configs/whitelist.yaml.example "$PKGDIR"/etc/linux_patch_api/whitelist.yaml

# Create PKGBUILD
echo "Creating PKGBUILD..."
cat > PKGBUILD << 'EOF'
pkgname=linux-patch-api
pkgver=1.0.0
pkgrel=1
pkgdesc="Secure remote package management API for Linux systems"
url="https://gitea.moon-dragon.us/echo/linux_patch_api"
arch=('x86_64')
license=('MIT')
depends=('systemd')

package() {
    # Use absolute path since makepkg changes working directory to srcdir
    cp -r /workspace/echo/linux_patch_api/arch-package/* "$pkgdir"/
}
EOF

# Create .SRCINFO
echo "Creating .SRCINFO..."

# Build package
echo "Building Arch package..."

# For CI/container environments where we run as root, create a build user
if [ "$(id -u)" = "0" ]; then
    echo "Running as root - creating build user for makepkg..."
    useradd -m builduser 2>/dev/null || true
    chown -R builduser:builduser "$(pwd)"
    su - builduser -c "cd $(pwd) && makepkg --printsrcinfo > .SRCINFO"
    su - builduser -c "cd $(pwd) && makepkg -f --noconfirm"
else
    makepkg --printsrcinfo > .SRCINFO
    makepkg -f --noconfirm
fi

# Copy to releases directory
echo ""
echo "Copying package to releases/..."
mkdir -p releases
cp *.pkg.tar.zst releases/

echo ""
echo "=== Build Complete ==="
echo "Package: releases/linux-patch-api-*.pkg.tar.zst"
echo ""
echo "Install with:"
echo "  sudo pacman -U ./releases/linux-patch-api-*.pkg.tar.zst"
