43 lines
1.3 KiB
Bash
Executable File
43 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
|
||
SUMMARY_FILE="${1:?summary file required}"
|
||
PROJECT_DIR="${2:-/home/long/project/蚊子}"
|
||
|
||
[ -s "$SUMMARY_FILE" ] || { echo "summary missing/empty" >&2; exit 2; }
|
||
|
||
# 1) 必须包含结构化字段
|
||
for k in "执行命令" "修改文件" "测试结果" "剩余未完成"; do
|
||
grep -q "$k" "$SUMMARY_FILE" || { echo "missing section: $k" >&2; exit 3; }
|
||
done
|
||
|
||
# 2) 至少有3条命令证据(bash代码块内或行内命令)
|
||
cmd_count=$(grep -E "(mvn|npm|npx|pnpm|yarn|pytest|go test|gradle|playwright)" "$SUMMARY_FILE" | wc -l | tr -d ' ')
|
||
if [ "${cmd_count:-0}" -lt 3 ]; then
|
||
echo "insufficient command evidence: $cmd_count" >&2
|
||
exit 4
|
||
fi
|
||
|
||
# 3) 提取日志路径并验证至少2个真实存在
|
||
# 允许绝对路径,或相对 logs/ target/ frontend/**/test-results/
|
||
mapfile -t paths < <(grep -Eo '/[^ )`"]+\.(log|txt|md|xml|json)|((logs|target|frontend)/[^ )`"]+\.(log|txt|md|xml|json))' "$SUMMARY_FILE" | sort -u)
|
||
|
||
exists=0
|
||
for p in "${paths[@]:-}"; do
|
||
if [[ "$p" = /* ]]; then
|
||
fp="$p"
|
||
else
|
||
fp="$PROJECT_DIR/$p"
|
||
fi
|
||
if [ -f "$fp" ]; then
|
||
exists=$((exists+1))
|
||
fi
|
||
done
|
||
|
||
if [ "$exists" -lt 2 ]; then
|
||
echo "insufficient raw log path evidence: $exists" >&2
|
||
exit 5
|
||
fi
|
||
|
||
echo "evidence ok: cmd_count=$cmd_count existing_logs=$exists"
|