#!/usr/bin/env sh

set -eu

echo "----------------------------------------"
echo "EasyConfig Installer"
echo "----------------------------------------"

echo "Checking Docker..."

if ! command -v docker >/dev/null 2>&1; then
    echo "Docker is not installed on this server."
    echo "Please install Docker first, then run this installer again."
    exit 1
fi

echo "Docker found."

INSTALL_DIR="${EASYCONFIG_DIR:-/opt/easyconfig}"
PROJECTS_DIR="/etc/easyconfig/projects"
DATA_DIR="/var/lib/easyconfig"
LOG_DIR="/var/log/easyconfig"

echo "Creating required directories..."

mkdir -p "$INSTALL_DIR"
mkdir -p "$PROJECTS_DIR"
mkdir -p "$DATA_DIR"
mkdir -p "$LOG_DIR"

echo "Directories created."

echo "Checking Docker network..."

if ! docker network inspect easyconfig-public >/dev/null 2>&1; then
    docker network create easyconfig-public >/dev/null
    echo "Created Docker network: easyconfig-public"
else
    echo "Docker network already exists: easyconfig-public"
fi

echo "Creating docker-compose.yml..."

cat > "$INSTALL_DIR/docker-compose.yml" <<'COMPOSE'
services:
  easyconfig-panel:
    image: easyconfig/panel:latest
    container_name: easyconfig-panel
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - /etc/easyconfig/projects:/etc/easyconfig/projects
      - /var/lib/easyconfig:/var/lib/easyconfig
      - /var/log/easyconfig:/var/log/easyconfig
    networks:
      - easyconfig-public

networks:
  easyconfig-public:
    external: true
COMPOSE

echo "----------------------------------------"
echo "EasyConfig installer completed."
echo "----------------------------------------"
echo ""
echo "Installation directory:"
echo "$INSTALL_DIR"
echo ""
echo "To start EasyConfig when the Docker image is available, run:"
echo ""
echo "cd $INSTALL_DIR && docker compose up -d"
echo ""