#!/bin/bash

export TERM=xterm

set_terminal_size() {
    eval $(resize 2>/dev/null)
    export COLUMNS
    export LINES
}

trap set_terminal_size WINCH
set_terminal_size

base_url="https://uniconnect.license.uniconnect.io"
LOG_FILE="./uniconnect_setup.log"
DOMAIN=""

source /usr/local/bin/uniconnect/scripts/utils.sh
source /usr/local/bin/uniconnect/scripts/directory_creation.sh
source /usr/local/bin/uniconnect/scripts/docker.sh
source /usr/local/bin/uniconnect/scripts/environment_setup.sh
source /usr/local/bin/uniconnect/scripts/nginx_config.sh
source /usr/local/bin/uniconnect/scripts/get_domain.sh
source /usr/local/bin/uniconnect/scripts/messages.sh

setup_environment() {

    if ! create_directories; then
        log  "❌ Directory creation failed. Exiting."
        echo "❌ Directory creation failed. Exiting."
        exit 1
    else 
        create_env_file
        create_ui_env_file
        create_nginx_config_file
        create_docker_compose

        log "Enviroment Setup successfully"
    fi
}

start_uniconnect() {

    cd $BASE_ETC/docker
    docker compose up --build -d
    docker logout > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "✅ Docker Compose started successfully."
        sleep 5

        # final
        clear
        echo -e "$LOGO"
        echo -e "$BANNER"
        echo -e "$SEPERATOR"
        intro
        echo -e "$SEPERATOR"

    else
        echo "❌ Docker Compose failed. Exiting..."
        exit 1
    fi

}


log "Starting Uniconnect installation process..."

if [ "$(id -u)" -ne 0 ]; then
  error_exit "This script must be run as root."

elif ! command -v docker &> /dev/null; then
  error_exit "Docker is not installed on this server."

elif ! docker info &> /dev/null; then
  error_exit "Docker is installed but not accessible. Is the Docker daemon running?"

else
    if ! get_domain; then
        echo "❌ Directory creation failed. Exiting."
        exit 1
    fi
fi

log "Uniconnect installation completed successfully."