#!/bin/sh
set -eu

BASE_URL="https://sitebrush.com/download/latest/server-app"
INSTALL_PATH="/usr/local/bin/sitebrush"

OS="$(uname -s 2>/dev/null || true)"
ARCH="$(uname -m 2>/dev/null || true)"

case "$OS" in
    Linux)
        BINARY_OS="linux"
        DISPLAY_OS="Linux"
        ;;
    Darwin)
        BINARY_OS="darwin"
        DISPLAY_OS="macOS"
        ;;
    FreeBSD)
        BINARY_OS="freebsd"
        DISPLAY_OS="FreeBSD"
        ;;
    OpenBSD)
        BINARY_OS="openbsd"
        DISPLAY_OS="OpenBSD"
        ;;
    *)
        echo "Unsupported operating system: ${OS:-unknown}" >&2
        echo "Supported: Linux, macOS, FreeBSD, OpenBSD." >&2
        exit 1
        ;;
esac

case "$ARCH" in
    x86_64|amd64)
        BINARY_ARCH="amd64"
        ;;
    aarch64|arm64)
        BINARY_ARCH="arm64"
        ;;
    *)
        echo "Unsupported CPU architecture: ${ARCH:-unknown}" >&2
        echo "Supported: amd64/x86_64 and arm64/aarch64." >&2
        exit 1
        ;;
esac

URL="$BASE_URL/sitebrush_${BINARY_OS}_${BINARY_ARCH}"
TMP="${TMPDIR:-/tmp}/sitebrush.$$"
trap 'rm -f "$TMP"' EXIT HUP INT TERM

echo ""
echo "SiteBrush universal installer"
echo "--------------------------------"
echo "Operating system : $DISPLAY_OS"
echo "Architecture     : $BINARY_ARCH"
echo "Binary           : $URL"
echo ""

if command -v curl >/dev/null 2>&1; then
    curl -fL --progress-bar "$URL" -o "$TMP"
elif command -v fetch >/dev/null 2>&1; then
    fetch -o "$TMP" "$URL"
elif command -v ftp >/dev/null 2>&1; then
    ftp -o "$TMP" "$URL"
elif command -v wget >/dev/null 2>&1; then
    wget -O "$TMP" "$URL"
else
    echo "No supported downloader found." >&2
    echo "Install curl, fetch, ftp, or wget and run the installer again." >&2
    exit 1
fi

INSTALL_DIR="$(dirname "$INSTALL_PATH")"
if [ ! -d "$INSTALL_DIR" ]; then
    mkdir -p "$INSTALL_DIR"
fi

if command -v install >/dev/null 2>&1; then
    install -m 0755 "$TMP" "$INSTALL_PATH"
else
    cp "$TMP" "$INSTALL_PATH"
    chmod 0755 "$INSTALL_PATH"
fi

echo ""
echo "Installed: $INSTALL_PATH"
echo "Configuring SiteBrush..."
"$INSTALL_PATH" -install
