#!/bin/bash

# 设置输入和输出目录
in_dir="in"
bin_dir="build"
out_dir="out"
lib_dir="lib"

rm -rf out
# 清空
echo "" > time.txt

# 确保输出目录存在
mkdir -p "$out_dir"

# 设置动态链接库路径
export LD_LIBRARY_PATH=./$lib_dir:$LD_LIBRARY_PATH

# 遍历build目录下的所有文件
for file in "$bin_dir"/*; do
    # 检查文件是否存在
    if [ -f "$file" ]; then
        # 获取文件名(不含路径)
        filename=$(basename -- "$file")
        # 移除文件扩展名,假设输出的可执行文件不需要扩展名
        basename="${filename%.*}"
        # 记录开始运行的文件
        echo "$file begin to run" >> time.txt
        # 检查对应的输入文件是否存在
        if [ -f "$in_dir/$basename.in" ]; then
            # 如果输入文件存在,正常重定向输入输出
            "$file" < "$in_dir/$basename.in" > "$out_dir/$basename.out" 2>> time.txt
        else
            # 如果输入文件不存在,执行文件但不重定向输入
            "$file" > "$out_dir/$basename.out" 2>> time.txt
        fi
        # 捕获上一个命令的返回值
        exit_code=$?
        # 将返回值追加到输出文件的末尾
        echo "$exit_code" >> "$out_dir/$basename.out"
        # 分隔符,用于区分不同的运行结果
        echo "---------- ---------- ---------- ----------" >> time.txt
    fi
done