# Enhanced logging system for provisioning tool

export def log-info [
    message: string
    context?: string
] {
    let timestamp = (date now | format date '%Y-%m-%d %H:%M:%S')
    let context_str = if ($context | is-not-empty) { $" [($context)]" } else { "" }
    print $"ℹ️  ($timestamp)($context_str) ($message)"
}

export def log-success [
    message: string
    context?: string
] {
    let timestamp = (date now | format date '%Y-%m-%d %H:%M:%S')
    let context_str = if ($context | is-not-empty) { $" [($context)]" } else { "" }
    print $"✅ ($timestamp)($context_str) ($message)"
}

export def log-warning [
    message: string
    context?: string
] {
    let timestamp = (date now | format date '%Y-%m-%d %H:%M:%S')
    let context_str = if ($context | is-not-empty) { $" [($context)]" } else { "" }
    print $"⚠️  ($timestamp)($context_str) ($message)"
}

export def log-error [
    message: string
    context?: string
    details?: string
] {
    let timestamp = (date now | format date '%Y-%m-%d %H:%M:%S')
    let context_str = if ($context | is-not-empty) { $" [($context)]" } else { "" }
    let details_str = if ($details | is-not-empty) { $"\n   Details: ($details)" } else { "" }
    print $"🛑 ($timestamp)($context_str) ($message)($details_str)"
}

export def log-debug [
    message: string
    context?: string
] {
    if $env.PROVISIONING_DEBUG {
        let timestamp = (date now | format date '%Y-%m-%d %H:%M:%S')
        let context_str = if ($context | is-not-empty) { $" [($context)]" } else { "" }
        print $"🐛 ($timestamp)($context_str) ($message)"
    }
}

export def log-step [
    step: string
    total_steps: int
    current_step: int
    context?: string
] {
    let progress = $"($current_step)/($total_steps)"
    let context_str = if ($context | is-not-empty) { $" [($context)]" } else { "" }
    print $"🔄 ($progress)($context_str) ($step)"
}

export def log-progress [
    message: string
    percent: int
    context?: string
] {
    let context_str = if ($context | is-not-empty) { $" [($context)]" } else { "" }
    print $"📊 ($context_str) ($message) ($percent)%"
}

export def log-section [
    title: string
    context?: string
] {
    let context_str = if ($context | is-not-empty) { $" [($context)]" } else { "" }
    print $""
    print $"📋 ($context_str) ($title)"
    print $"─────────────────────────────────────────────────────────────"
}

export def log-subsection [
    title: string
    context?: string
] {
    let context_str = if ($context | is-not-empty) { $" [($context)]" } else { "" }
    print $"  📌 ($context_str) ($title)"
} 