#!/usr/bin/env bash set -euo pipefail readonly GREEN='\033[0;32m' readonly YELLOW='\033[1;33m' readonly BLUE='\033[0;34m' readonly NC='\033[0m' log_info() { echo -e "${GREEN}[INFO]${NC} $*"; } log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; } log_step() { echo -e "${BLUE}[STEP]${NC} $*"; } SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" WSL_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" AUTOMATION_DIR="$(cd "$WSL_DIR/.." && pwd)" DOCKER_ENV_FILE="$WSL_DIR/.env" COMPOSE_FILE="$WSL_DIR/docker-compose.yml" PID_DIR="$AUTOMATION_DIR/wsl_runtime/pids" compose_cmd() { docker compose --env-file "$DOCKER_ENV_FILE" -f "$COMPOSE_FILE" "$@" } stop_runner() { local pid_file="$1" if [[ ! -f "$pid_file" ]]; then return fi local pid pid="$(cat "$pid_file")" if kill -0 "$pid" 2>/dev/null; then kill -TERM "$pid" 2>/dev/null || true sleep 2 kill -KILL "$pid" 2>/dev/null || true fi rm -f "$pid_file" } main() { log_step "Stopping queue runner" stop_runner "$PID_DIR/queue-runner.pid" echo log_step "Stopping Docker services" if command -v docker >/dev/null 2>&1; then compose_cmd down "$@" || true else log_warn "Docker not installed" fi log_info "Stack stopped" } main "$@"