#!/usr/bin/env bash
#
# Bubo Loader installer — run on the TARGET server (needs root/sudo).
# Detects the PHP build and installs the matching prebuilt bubo.so, then
# enables it. Expects prebuilt modules next to this script named:
#     bubo-php{MAJMIN}-{nts|zts}-{arch}.so     e.g. bubo-php83-nts-x86_64.so
#
# Usage:
#   sudo ./install.sh [/path/to/php-binary]
#
set -euo pipefail

PHP_BIN="${1:-php}"
HERE="$(cd "$(dirname "$0")" && pwd)"

command -v "$PHP_BIN" >/dev/null || { echo "PHP binary '$PHP_BIN' not found"; exit 1; }

VER=$("$PHP_BIN" -r 'echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;')
ZTS=$("$PHP_BIN" -r 'echo PHP_ZTS ? "zts" : "nts";')
ARCH=$(uname -m)
EXTDIR=$("$PHP_BIN" -i | awk -F'=> ' '/^extension_dir/{print $2; exit}' | tr -d ' ')
SCANDIR=$("$PHP_BIN" --ini | awk -F': ' '/Scan for additional/{print $2; exit}' | tr -d ' ')

SO="bubo-php${VER}-${ZTS}-${ARCH}.so"
SRC="$HERE/$SO"

echo "Detected: PHP $VER $ZTS $ARCH"
echo "extension_dir: $EXTDIR"
echo "scandir:       ${SCANDIR:-<none>}"
echo "looking for:   $SO"

[ -f "$SRC" ] || { echo "ERROR: prebuilt $SO not shipped. Build it for this PHP build."; exit 2; }
[ -n "$EXTDIR" ] && [ -d "$EXTDIR" ] || { echo "ERROR: extension_dir not found"; exit 3; }

cp "$SRC" "$EXTDIR/bubo.so"
echo "installed -> $EXTDIR/bubo.so"

if [ -n "${SCANDIR:-}" ] && [ -d "$SCANDIR" ]; then
    echo "extension=bubo.so" > "$SCANDIR/bubo.ini"
    echo "enabled via $SCANDIR/bubo.ini"
else
    echo "NOTE: no scandir; add 'extension=bubo.so' to your php.ini manually."
fi

echo "--- verify ---"
"$PHP_BIN" -m | grep -qx bubo && echo "OK: bubo loaded" || { echo "FAILED: bubo not loaded"; exit 4; }
echo "Done. Restart php-fpm / web server for it to take effect on the site."
