#!/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
        # Check if fcitx5 is running
        if pgrep -u "$USER" fcitx5 >/dev/null; then
            # If -r flag doesn't exist in args (either alone or in combinations like -rd, -dr), add it
            if [[ ! "$*" =~ (^|-)[[:space:]]*[a-z]*r[a-z]* ]]; then
                exec fcitx5 -r "$@" >> "$FCITX_LOG" 2>&1
            else
                exec fcitx5 "$@" >> "$FCITX_LOG" 2>&1
            fi
        else
            exec fcitx5 "$@" >> "$FCITX_LOG" 2>&1
        fi
    fi
}

function trystart()
{
    manage_log

    run_fcitx5 "$@"
}

trystart "$@"
