#!/bin/bash
# wget -O /tmp/docker_containers_oci.sh https://git.technozone.com.au/vijay/Scripts/raw/branch/main/docker_containers_oci && bash /tmp/docker_containers_oci.sh && rm -f /tmp/docker_containers_oci.sh
BASE_DIR="/mnt/data"
CONTAINERS_DIR="$BASE_DIR/containers"
VOLUMES_DIR="$BASE_DIR/volumes"

# Ensure base dirs exist
mkdir -p "$CONTAINERS_DIR"
mkdir -p "$VOLUMES_DIR"

function create_container() {
    echo "Enter container name (e.g. dockhand, grafana):"
    read NAME

    if [ -z "$NAME" ]; then
        echo "❌ Name cannot be empty"
        return
    fi

    CONTAINER_PATH="$CONTAINERS_DIR/$NAME"
    VOLUME_PATH="$VOLUMES_DIR/$NAME/data"

    if [ -d "$CONTAINER_PATH" ]; then
        echo "⚠️ Container already exists!"
        return
    fi

    echo "🚀 Creating structure..."

    mkdir -p "$CONTAINER_PATH"
    mkdir -p "$VOLUME_PATH"

    COMPOSE_FILE="$CONTAINER_PATH/docker-compose.yml"

    cat <<EOF > "$COMPOSE_FILE"
version: "3.9"

services:
  $NAME:
    image: your-image-here
    container_name: $NAME
    restart: unless-stopped

    ports:
      - "PORT:PORT"

    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - $VOLUME_PATH:/app/data

    environment:
      - TZ=Australia/Melbourne

    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

# networks:
#   ${NAME}_net:
#     driver: bridge
EOF

    echo "✅ Created:"
    echo "📁 $CONTAINER_PATH"
    echo "📁 $VOLUME_PATH"
    echo "📄 docker-compose.yml"

    echo ""
    echo "👉 Opening docker-compose.yml for editing..."
    sleep 1

    nano "$COMPOSE_FILE"
}

function start_container() {
    echo "Enter container name to start:"
    read NAME

    CONTAINER_PATH="$CONTAINERS_DIR/$NAME"

    if [ ! -d "$CONTAINER_PATH" ]; then
        echo "❌ Container not found!"
        return
    fi

    cd "$CONTAINER_PATH" || return
    docker compose up -d

    echo "✅ Container started"
}

function list_containers() {
    echo "📦 Available containers:"
    ls "$CONTAINERS_DIR"
}

function main_menu() {
    while true; do
        clear
        echo "======================================"
        echo "   🚀 Container Management Menu"
        echo "======================================"
        echo "1. Create New Container"
        echo "2. Start Container"
        echo "3. List Containers"
        echo "4. Exit"
        echo "======================================"
        echo "Choose an option:"
        read OPTION

        case $OPTION in
            1) create_container ;;
            2) start_container ;;
            3) list_containers; read -p "Press enter to continue..." ;;
            4) exit 0 ;;
            *) echo "❌ Invalid option"; sleep 1 ;;
        esac
    done
}

main_menu