#!/usr/bin/env bash

# Log management function
function manage_log()
{
    # Set log directory and file
    FCITX_LOG_DIR="$HOME/.cache/fcitx5"
    FCITX_LOG="$FCITX_LOG_DIR/fcitx5.log"

    # Create log directory if not exists
    mkdir -p "$FCITX_LOG_DIR"

    # Remove logs older than 7 days
    find "$FCITX_LOG_DIR" -name 'fcitx5.log*' -mtime +7 -delete 2>/dev/null

    # Clear log file if it's larger than 10MB
    if [ -f "$FCITX_LOG" ] && [ $(stat -f%z "$FCITX_LOG" 2>/dev/null || stat -c%s "$FCITX_LOG" 2>/dev/null) -gt 10485760 ]; then
        : > "$FCITX_LOG"
    fi
}

run_fcitx5() {
    if which fcitx5 > /dev/null 2>&1; then
        # If fcitx5 is running and no -r flag, try to force kill it first
        if pgrep -u "$USER" fcitx5 >/dev/null && [[ ! "$@" =~ "-r" ]]; then
            pkill -9 -u "$USER" fcitx5
            sleep 0.1  # Give some time for the process to be killed
            # If process still exists, use -r flag
            if pgrep -u "$USER" fcitx5 >/dev/null; then
                exec fcitx5 -r "$@" >> "$FCITX_LOG" 2>&1
            fi
        fi
        exec fcitx5 "$@" >> "$FCITX_LOG" 2>&1
    fi
}

function trystart()
{
    manage_log

    run_fcitx5 "$@"
}

trystart "$@"
