72 lines
2.0 KiB
Bash
72 lines
2.0 KiB
Bash
|
|
#!/usr/bin/env bash
|
||
|
|
# Common logging functions for scripts
|
||
|
|
# Usage: source "$SCRIPT_DIR/lib/common/logging.sh"
|
||
|
|
|
||
|
|
# Source colors if not already sourced
|
||
|
|
[ -z "${RED:-}" ] && source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/colors.sh"
|
||
|
|
|
||
|
|
# Logging levels (idempotent & safe to re-source)
|
||
|
|
: "${LOG_LEVEL_DEBUG:=0}"
|
||
|
|
: "${LOG_LEVEL_INFO:=1}"
|
||
|
|
: "${LOG_LEVEL_WARN:=2}"
|
||
|
|
: "${LOG_LEVEL_ERROR:=0}"
|
||
|
|
# Mark as readonly if not already
|
||
|
|
readonly LOG_LEVEL_DEBUG 2>/dev/null || true
|
||
|
|
readonly LOG_LEVEL_INFO 2>/dev/null || true
|
||
|
|
readonly LOG_LEVEL_WARN 2>/dev/null || true
|
||
|
|
readonly LOG_LEVEL_ERROR 2>/dev/null || true
|
||
|
|
|
||
|
|
# Default log level
|
||
|
|
: "${LOG_LEVEL:=$LOG_LEVEL_INFO}"
|
||
|
|
|
||
|
|
# Logging functions
|
||
|
|
log_debug() {
|
||
|
|
[ "$LOG_LEVEL" -le "$LOG_LEVEL_DEBUG" ] && echo -e "${CYAN}[DEBUG]${NC} $*" >&2
|
||
|
|
}
|
||
|
|
|
||
|
|
log_info() {
|
||
|
|
[ "$LOG_LEVEL" -le "$LOG_LEVEL_INFO" ] && echo -e "${GREEN}[INFO]${NC} $*"
|
||
|
|
}
|
||
|
|
|
||
|
|
log_warn() {
|
||
|
|
[ "$LOG_LEVEL" -le "$LOG_LEVEL_WARN" ] && echo -e "${YELLOW}[WARN]${NC} $*" >&2
|
||
|
|
}
|
||
|
|
|
||
|
|
log_error() {
|
||
|
|
[ "$LOG_LEVEL" -le "$LOG_LEVEL_ERROR" ] && echo -e "${RED}[ERROR]${NC} $*" >&2
|
||
|
|
}
|
||
|
|
|
||
|
|
log_success() {
|
||
|
|
echo -e "${GREEN}✓${NC} $*"
|
||
|
|
}
|
||
|
|
|
||
|
|
log_failure() {
|
||
|
|
echo -e "${RED}✗${NC} $*"
|
||
|
|
}
|
||
|
|
|
||
|
|
log_section() {
|
||
|
|
local title="$1"
|
||
|
|
echo ""
|
||
|
|
echo -e "${BOLD}${BLUE}════════════════════════════════════════════════════════════════${NC}"
|
||
|
|
echo -e "${BOLD}${BLUE} ${title}${NC}"
|
||
|
|
echo -e "${BOLD}${BLUE}════════════════════════════════════════════════════════════════${NC}"
|
||
|
|
echo ""
|
||
|
|
}
|
||
|
|
|
||
|
|
log_subsection() {
|
||
|
|
local title="$1"
|
||
|
|
echo ""
|
||
|
|
echo -e "${CYAN}${title}${NC}"
|
||
|
|
echo "$(printf '─%.0s' {1..60})"
|
||
|
|
echo ""
|
||
|
|
}
|
||
|
|
|
||
|
|
# Print separator line
|
||
|
|
print_separator() {
|
||
|
|
local char="${1:-=}"
|
||
|
|
local width="${2:-80}"
|
||
|
|
printf "%.0s${char}" $(seq 1 "$width")
|
||
|
|
echo
|
||
|
|
}
|
||
|
|
|