|
3 | 3 | # Load configuration file |
4 | 4 | source config.cfg |
5 | 5 |
|
| 6 | +# ===================== Logging toggle (drop-in) ===================== |
| 7 | +# Assumes config.cfg already sourced above. |
| 8 | +: "${VADERSHELL_LOG_ENABLED:=1}" |
| 9 | +: "${VADERSHELL_LOG_MODE:=tee}" |
| 10 | +: "${VADERSHELL_LOG_DIR:=$HOME/.vadershell/logs}" |
| 11 | +: "${VADERSHELL_LOG_FILE:=}" |
| 12 | +: "${VADERSHELL_TRACE:=0}" |
| 13 | + |
| 14 | +if [[ "$VADERSHELL_LOG_ENABLED" == "1" ]]; then |
| 15 | + mkdir -p "$VADERSHELL_LOG_DIR" |
| 16 | + SCRIPT_NAME="$(basename "$0")" |
| 17 | + START_TS="$(date +"%Y%m%d-%H%M%S")" |
| 18 | + if [[ -z "$VADERSHELL_LOG_FILE" ]]; then |
| 19 | + VADERSHELL_LOG_FILE="$VADERSHELL_LOG_DIR/${SCRIPT_NAME%.*}_${START_TS}.log" |
| 20 | + else |
| 21 | + mkdir -p "$(dirname "$VADERSHELL_LOG_FILE")" |
| 22 | + fi |
| 23 | + |
| 24 | + case "$VADERSHELL_LOG_MODE" in |
| 25 | + tee) |
| 26 | + exec > >(stdbuf -i0 -o0 -e0 tee -a "$VADERSHELL_LOG_FILE") 2>&1 |
| 27 | + ;; |
| 28 | + ts-file) |
| 29 | + # Console: raw; File: timestamped (pure bash) |
| 30 | + exec > >(tee >(stdbuf -i0 -o0 -e0 bash -c ' |
| 31 | + f="$1" |
| 32 | + while IFS= read -r line; do |
| 33 | + printf "[%(%Y-%m-%d %H:%M:%S)T] %s\n" -1 "$line" |
| 34 | + done >> "$f" |
| 35 | + ' _ "$VADERSHELL_LOG_FILE")) 2>&1 |
| 36 | + ;; |
| 37 | + ts-both) |
| 38 | + # Console + File: timestamped (⚠ single-line prompts may appear late on console) |
| 39 | + exec > >(bash -c ' |
| 40 | + f="$1" |
| 41 | + while IFS= read -r line; do |
| 42 | + printf "[%(%Y-%m-%d %H:%M:%S)T] %s\n" -1 "$line" | tee -a "$f" |
| 43 | + done |
| 44 | + ' _ "$VADERSHELL_LOG_FILE") 2>&1 |
| 45 | + ;; |
| 46 | + none|*) |
| 47 | + : |
| 48 | + ;; |
| 49 | + esac |
| 50 | + |
| 51 | + echo "[INFO] Log enabled: $VADERSHELL_LOG_MODE -> $VADERSHELL_LOG_FILE" |
| 52 | + |
| 53 | + if [[ "$VADERSHELL_TRACE" == "1" ]]; then |
| 54 | + export PS4='+ $(date "+%Y-%m-%d %H:%M:%S") ${BASH_SOURCE##*/}:${LINENO}:${FUNCNAME[0]:-main}: ' |
| 55 | + set -x |
| 56 | + fi |
| 57 | +fi |
| 58 | +# =================== End logging toggle block ====================== |
| 59 | + |
| 60 | + |
6 | 61 | declare -A vm_list |
7 | 62 | declare -i total_vms=0 |
8 | 63 | declare -i total_servers=${#SERVERS[@]} |
|
0 commit comments