#!/bin/bash

# 日志记录模块
# 提供日志记录和日志文件管理功能
#
# ⚠️ 重要提示:
#   所有配置项必须从 Jenkinsfile 的 environment 部分传入
#   此脚本不包含任何硬编码配置，确保配置集中管理
#
# 必需的环境变量:
#   - BUILD_LOG_FILE: 日志文件路径（应在 Jenkinsfile 中设置）

# 全局变量（从环境变量读取，如果没有设置则使用默认值作为后备）
BUILD_LOG_FILE="${BUILD_LOG_FILE:-/tmp/build_$(date '+%Y%m%d_%H%M%S').log}"

# 初始化日志文件（带 UTF-8 BOM）
init_log_file() {
    echo -ne '\xEF\xBB\xBF' > "$BUILD_LOG_FILE"
}

# 日志记录函数
log_message() {
    local message="$1"
    echo -e "[$(date '+%Y-%m-%d %H:%M:%S')] $message" | tee -a "$BUILD_LOG_FILE"
}

# 清理旧日志文件，只保留最近5个
cleanup_old_logs() {
    local log_dir="${1:-/tmp}"
    local log_prefix="${2:-build_}"

    # 列出所有构建日志文件（按时间从旧到新排序），删除旧的文件，只保留最新的5个
    find "$log_dir" -name "${log_prefix}*.log" -type f -printf '%T+ %p\n' | \
    sort | \
    head -n -5 | \
    awk '{print $2}' | \
    xargs -r rm -f

    log_message "已清理旧日志文件"
}

# 统计日志中的警告和错误数量
get_log_stats() {
    local warning_count=$(grep -i "warning" "$BUILD_LOG_FILE" | wc -l)
    local error_count=$(grep -i "error" "$BUILD_LOG_FILE" | wc -l)

    echo "WARNING_COUNT=${warning_count}"
    echo "ERROR_COUNT=${error_count}"
}
