#!/usr/bin/env bash
# BadAI command-line tool
# Usage: badai restart [--sleep N]

set -e  # Exit on error

sleep_time=3  # Default sleep time in seconds

# Parse arguments
if [[ "$1" == "restart" ]]; then
    name=""
    if [[ "$2" == "--sleep" && -n "$3" && "$3" =~ ^[0-9]+$ ]]; then
        sleep_time="$3"
        name="$4"
    elif [[ -n "$2" ]]; then
        name="$2"
    fi

    echo "Reloading systemd user daemon..."
    systemctl --user daemon-reload

    if [[ -n "$name" ]]; then
        # Riavvia servizio specifico
        # Cerca container
        container_file=""
        for file in ~/.config/containers/systemd/*.container; do
            if [[ -f "$file" ]]; then
                if [[ "$(basename "$file")" =~ ^99_ ]]; then continue; fi
                service_name=$(basename "$file" .container)
                display_name=$(echo "$service_name" | sed 's/^[0-9]*_//')
                if [[ "$display_name" == "$name" ]]; then
                    container_file="$file"
                    break
                fi
            fi
        done
        if [[ -n "$container_file" ]]; then
            service_name=$(basename "$container_file" .container)
            echo "Restarting container $name..."
            if systemctl --user restart "$service_name" 2>/dev/null; then
                echo "  ✓ $name restarted successfully"
            else
                echo "  ✗ Failed to restart $name"
            fi
        else
            # Cerca network
            network_file=""
            for file in ~/.config/containers/systemd/*.network; do
                if [[ -f "$file" ]]; then
                    if [[ "$(basename "$file")" =~ ^99_ ]]; then continue; fi
                    service_name=$(basename "$file" .network)-network
                    display_name=$(echo "$service_name" | sed 's/^[0-9]*_//')
                    if [[ "$display_name" == "$name" ]]; then
                        network_file="$file"
                        break
                    fi
                fi
            done
            if [[ -n "$network_file" ]]; then
                service_name=$(basename "$network_file" .network)-network
                echo "Restarting network $name..."
                if systemctl --user try-restart "$service_name" 2>/dev/null || systemctl --user start "$service_name" 2>/dev/null; then
                    echo "  ✓ $name restarted successfully"
                else
                    echo "  ✗ Failed to restart $name"
                fi
            else
                echo "Service $name not found."
                exit 1
            fi
        fi
        # Riavvia nginx
        nginx_file=""
        for file in ~/.config/containers/systemd/*nginx*.container; do
            if [[ -f "$file" ]]; then
                nginx_file="$file"
                break
            fi
        done
        if [[ -n "$nginx_file" ]]; then
            service_name=$(basename "$nginx_file" .container)
            echo "Restarting nginx..."
            if systemctl --user restart "$service_name" 2>/dev/null; then
                echo "  ✓ nginx restarted successfully"
            else
                echo "  ✗ Failed to restart nginx"
            fi
        fi
    else
        # Riavvia tutti
        echo "Restarting all quadlet networks..."
        for file in ~/.config/containers/systemd/*.network; do
            if [[ -f "$file" ]]; then
                if [[ "$(basename "$file")" =~ ^99_ ]]; then continue; fi
                service_name=$(basename "$file" .network)-network
                display_name=$(echo "$service_name" | sed 's/^[0-9]*_//')
                echo "Restarting $display_name..."
                if systemctl --user try-restart "$service_name" 2>/dev/null || systemctl --user start "$service_name" 2>/dev/null; then
                    echo "  ✓ $display_name restarted successfully"
                else
                    echo "  ✗ Failed to restart $display_name"
                fi
                sleep "$sleep_time"
            fi
        done

        echo "Restarting all quadlet containers..."
        for file in ~/.config/containers/systemd/*.container; do
            if [[ -f "$file" ]]; then
                if [[ "$(basename "$file")" =~ ^99_ ]]; then continue; fi
                service_name=$(basename "$file" .container)
                display_name=$(echo "$service_name" | sed 's/^[0-9]*_//')
                echo "Restarting $display_name..."
                if systemctl --user restart "$service_name" 2>/dev/null; then
                    echo "  ✓ $display_name restarted successfully"
                else
                    echo "  ✗ Failed to restart $display_name"
                fi
                sleep "$sleep_time"
            fi
        done

        echo "All services restarted successfully."
    fi
elif [[ "$1" == "help" || -z "$1" ]]; then
    cat <<'EOF'
B A D A I - C O M M A N D  L I N E
--------------------------------------------------------------------------------

Usage: badai <command> [options]

Commands:
  restart [--sleep N] [name]    Restart all quadlet containers and networks, or a specific one by name (without prefix), reload systemd user daemon
  help                         Show this help message

Options:
  --sleep N              Sleep N seconds between restarts (default: 3)
EOF
else
    echo "Unknown command: $1"
    echo "Use 'badai help' for usage."
fi