#!/usr/bin/env bash # Tail MCC and/or server logs side-by-side or individually. # Usage: # tools/mcc-log-tail.sh # tail MCC log only # tools/mcc-log-tail.sh --session NAME # tail MCC log for a specific session # tools/mcc-log-tail.sh --server VER # tail both MCC and server logs # tools/mcc-log-tail.sh --server-only VER # tail server log only set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" # shellcheck source=tools/mcc-env.sh source "$REPO_ROOT/tools/mcc-env.sh" SESSION="" SERVER_VER="" SERVER_ONLY=false while [[ $# -gt 0 ]]; do case "$1" in --session) if [[ $# -lt 2 ]]; then echo "--session requires a value" >&2 exit 1 fi SESSION="$2" shift 2 ;; --server) if [[ $# -lt 2 ]]; then echo "--server requires a value" >&2 exit 1 fi SERVER_VER="$2" shift 2 ;; --server-only) if [[ $# -lt 2 ]]; then echo "--server-only requires a value" >&2 exit 1 fi SERVER_ONLY=true SERVER_VER="$2" shift 2 ;; -h|--help) echo "Usage: tools/mcc-log-tail.sh [--session NAME] [--server VER] [--server-only VER]" exit 0 ;; *) echo "Unknown option: $1"; exit 1 ;; esac done SESSION="$(_mcc_resolve_session "$SESSION")" MCC_LOG="$(_mcc_session_log_file "$SESSION")" if $SERVER_ONLY; then if [[ -z "$SERVER_VER" ]]; then echo "Specify server version with --server-only VER" >&2 exit 1 fi SERVER_LOG="$MCC_SERVERS/$SERVER_VER/logs/latest.log" echo "=== Tailing server log: $SERVER_LOG ===" exec tail -f "$SERVER_LOG" fi if [[ -n "$SERVER_VER" ]]; then SERVER_LOG="$MCC_SERVERS/$SERVER_VER/logs/latest.log" echo "=== Tailing MCC + server logs ===" echo " Session: $SESSION" echo " MCC: $MCC_LOG" echo " Server: $SERVER_LOG" echo "" tail -f "$MCC_LOG" "$SERVER_LOG" 2>/dev/null else if [[ ! -f "$MCC_LOG" ]]; then echo "No MCC log found for session '$SESSION' at $MCC_LOG" echo "Start MCC first with: tools/mcc-debug.sh --session $SESSION --file-input" exit 1 fi echo "=== Tailing MCC log for session '$SESSION': $MCC_LOG ===" exec tail -f "$MCC_LOG" fi