#!/bin/bash

# Update Portainer container

set -e

CONTAINER_NAME="portainer"
IMAGE="portainer/portainer-ce:latest"

echo "=== Updating Portainer ==="

# Check Docker
if ! command -v docker >/dev/null 2>&1; then
    echo "ERROR: Docker not found."
    exit 1
fi

# Pull latest image
echo "Pulling latest image..."
docker pull "${IMAGE}"

# Stop existing container if present
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
    echo "Stopping existing container..."
    docker stop "${CONTAINER_NAME}"

    echo "Removing existing container..."
    docker rm "${CONTAINER_NAME}"
fi

# Recreate container
echo "Creating new container..."

docker run -d \
    --name "${CONTAINER_NAME}" \
    --restart=always \
    -p 9002:9000 \
    -p 9442:9443 \
    -v /etc/ssl/certs/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro \
    -v /run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data \
    "${IMAGE}"

echo "Waiting for startup..."
sleep 5

# Verify
if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
    echo "SUCCESS: Portainer updated successfully."
    docker ps | grep "${CONTAINER_NAME}"
else
    echo "ERROR: Portainer container is not running."
    docker logs "${CONTAINER_NAME}"
    exit 1
fi