#!/usr/bin/env bash set -euo pipefail ACTION="${1:-status}" RUNTIME_ROOT="${GOVERNANCE_UI_RUNTIME_ROOT:-/srv/mesavault/edge-oee-ucepsa}" APP_ROOT="${GOVERNANCE_UI_APP_ROOT:-$RUNTIME_ROOT/governance-ui}" CONTAINER="${GOVERNANCE_UI_CONTAINER:-mv_ucepsa_governance_ui}" IMAGE="${GOVERNANCE_UI_IMAGE:-mesavault/ucepsa-governance-ui:0.3.15}" NETWORK="${GOVERNANCE_UI_NETWORK:-mv_ucepsa_net}" HOST_IP="${GOVERNANCE_UI_HOST_IP:-0.0.0.0}" HOST_PORT="${GOVERNANCE_UI_HOST_PORT:-8091}" BASE_ENV="${GOVERNANCE_UI_BASE_ENV:-$RUNTIME_ROOT/.env}" UI_ENV="${GOVERNANCE_UI_ENV:-$APP_ROOT/.env}" require_build_files() { test -f "$APP_ROOT/Dockerfile" test -f "$APP_ROOT/requirements.txt" } require_runtime_files() { require_build_files test -f "$UI_ENV" test -f "$BASE_ENV" } build_image() { require_build_files docker build \ -t "$IMAGE" \ "$APP_ROOT" } start_container() { require_runtime_files docker rm -f "$CONTAINER" \ >/dev/null 2>&1 || true docker run -d \ --name "$CONTAINER" \ --restart unless-stopped \ --network "$NETWORK" \ --env-file "$BASE_ENV" \ --env-file "$UI_ENV" \ -e "PGHOST=mv_ucepsa_postgres_hot" \ -e "TENANT_OVERRIDE=ucepsa" \ -e "SITE_OVERRIDE=ucepsa_onpremise" \ -p "${HOST_IP}:${HOST_PORT}:8080" \ "$IMAGE" docker ps \ --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' \ | grep -E "$CONTAINER|NAMES" } case "$ACTION" in build) build_image ;; start) start_container ;; deploy) build_image start_container ;; restart) docker rm -f "$CONTAINER" \ >/dev/null 2>&1 || true start_container ;; stop) docker stop "$CONTAINER" ;; status) docker ps -a \ --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' \ | grep -E "$CONTAINER|NAMES" ;; logs) docker logs --tail 200 -f "$CONTAINER" ;; health) curl -fsS \ "http://127.0.0.1:${HOST_PORT}/health" echo ;; *) echo \ "Uso: $0 {build|start|deploy|restart|stop|status|logs|health}" \ >&2 exit 2 ;; esac