#!/bin/bash

source /opt/durapps/transhell/transhell.sh
load_transhell

# 显示帮助信息
function show_help() {
    echo -e "${TRANSHELL_CONTENT_HELP}"
}

# 检查文件删除时间并删除超过指定时长的文件
function check_delete_files() {
    local duration=$1

    # 临时修改 IFS 以正确处理带空格的文件名
    IFS=$'\n'
    local files=($(gio list -h trash://)) # 使用 -h 以隐藏无关信息

    # 获取当前时间的时间戳
    local current_time=$(date +%s)

    # 遍历回收站中的文件
    for file in "${files[@]}"; do
        # 获取文件的删除时间
        local delete_time=$(gio info -a "time::changed" "trash:///$file" | awk '/time::changed/ {print $2}')
        
        # 确保 delete_time 是有效的整数
        if [[ "$delete_time" =~ ^[0-9]+$ ]]; then
            # 计算文件删除时间与当前时间的差值
            local diff=$(( (current_time - delete_time) / 86400 ))
            
            # 如果差值大于指定时长，则删除文件并提示
            if [ "$diff" -gt "$duration" ]; then
                gio remove "trash:///$file"
                echo -e "${TRANSHELL_CONTENT_FILE_DELETED}: $file"
            fi
        fi
    done

    # 恢复原始 IFS
    unset IFS
}

# 解析命令行参数
while [[ $# -gt 0 ]]; do
    case "$1" in
        -d|--days)
            shift
            duration=$1
            shift
            ;;
        -h|--help)
            show_help
            exit 0
            ;;
        *)
            echo -e "${TRANSHELL_CONTENT_INVALID_PARAM}: $1"
            show_help
            exit 1
            ;;
    esac
done

# 检查时长参数是否为空
if [ -z "$duration" ]; then
    echo -e "${TRANSHELL_CONTENT_NO_DURATION}"
    show_help
    exit 1
fi

# 检查时长参数是否为正整数
re='^[0-9]+$'
if ! [[ $duration =~ $re ]] ; then
    echo -e "${TRANSHELL_CONTENT_INVALID_DURATION}: $duration"
    show_help
    exit 1
fi

# 调用函数检查删除文件
check_delete_files "$duration"
