#!/bin/bash

# =========================
# Colors
# =========================
ORANGE='\033[0;33m'
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m'

# =========================
# Clear Screen
# =========================
clear

# =========================
# Banner
# =========================
echo -e "${ORANGE}"
echo "====================================================="
echo "        QEMU GUEST AGENT INSTALLATION SCRIPT"
echo "====================================================="
echo -e "${NC}"

# =========================
# Root Check
# =========================
if [ "$EUID" -eq 0 ]; then
    CMD_PREFIX=""
    echo -e "${GREEN}[INFO] Running as root user${NC}"
else
    CMD_PREFIX="sudo"
    echo -e "${ORANGE}[INFO] Not running as root, using sudo${NC}"
fi

echo ""

# =========================
# Status Variables
# =========================
PKG_STATUS="NOT INSTALLED"
SERVICE_STATUS="STOPPED"
ENABLE_STATUS="DISABLED"

# =========================
# Function to Run Commands
# =========================
run_step() {
    DESC=$1
    CMD=$2

    echo -e "${ORANGE}[PROCESSING] $DESC...${NC}"
    eval $CMD >/dev/null 2>&1

    if [ $? -eq 0 ]; then
        echo -e "${GREEN}[SUCCESS] $DESC completed successfully${NC}"
    else
        echo -e "${RED}[FAILED] $DESC failed${NC}"
        exit 1
    fi
    echo ""
}

# =========================
# Update & Upgrade
# =========================
run_step "Updating package list" "$CMD_PREFIX apt update"
run_step "Upgrading packages" "$CMD_PREFIX apt upgrade -y"

# =========================
# Check if Installed
# =========================
echo -e "${ORANGE}[PROCESSING] Checking if qemu-guest-agent is installed...${NC}"

dpkg -s qemu-guest-agent >/dev/null 2>&1

if [ $? -eq 0 ]; then
    echo -e "${GREEN}[SUCCESS] qemu-guest-agent is already installed${NC}"
    PKG_STATUS="ALREADY INSTALLED"
else
    echo -e "${ORANGE}[INFO] qemu-guest-agent not installed. Installing...${NC}"
    run_step "Installing qemu-guest-agent" "$CMD_PREFIX apt install -y qemu-guest-agent"
    PKG_STATUS="INSTALLED NOW"
fi

# =========================
# Check if Service Running
# =========================
echo -e "${ORANGE}[PROCESSING] Checking if service is running...${NC}"

$CMD_PREFIX systemctl is-active --quiet qemu-guest-agent

if [ $? -eq 0 ]; then
    echo -e "${GREEN}[SUCCESS] Service already running${NC}"
    SERVICE_STATUS="ALREADY RUNNING"
else
    echo -e "${ORANGE}[INFO] Service not running. Starting...${NC}"
    run_step "Starting qemu-guest-agent service" "$CMD_PREFIX systemctl start qemu-guest-agent"
    SERVICE_STATUS="STARTED NOW"
fi

# =========================
# Check if Service Enabled
# =========================
echo -e "${ORANGE}[PROCESSING] Checking if service is enabled...${NC}"

$CMD_PREFIX systemctl is-enabled --quiet qemu-guest-agent

if [ $? -eq 0 ]; then
    echo -e "${GREEN}[SUCCESS] Service already enabled${NC}"
    ENABLE_STATUS="ALREADY ENABLED"
else
    echo -e "${ORANGE}[INFO] Service not enabled. Enabling...${NC}"
    run_step "Enabling qemu-guest-agent service" "$CMD_PREFIX systemctl enable --now qemu-guest-agent"
    ENABLE_STATUS="ENABLED NOW"
fi

# =========================
# Final Status Check
# =========================
echo -e "${ORANGE}[PROCESSING] Verifying final service status...${NC}"

$CMD_PREFIX systemctl is-active --quiet qemu-guest-agent

if [ $? -eq 0 ]; then
    FINAL_STATUS="${GREEN}RUNNING${NC}"
else
    FINAL_STATUS="${RED}NOT RUNNING${NC}"
fi

echo ""

# =========================
# Summary
# =========================
echo -e "${GREEN}=====================================================${NC}"
echo -e "${GREEN}                    SUMMARY                          ${NC}"
echo -e "${GREEN}=====================================================${NC}"

echo -e "Package Status  : ${PKG_STATUS}"
echo -e "Service Status  : ${SERVICE_STATUS}"
echo -e "Enable Status   : ${ENABLE_STATUS}"
echo -e "Final State     : ${FINAL_STATUS}"

echo -e "${GREEN}=====================================================${NC}"
echo ""