Spaces:
Running
Running
File size: 2,029 Bytes
d646dd7 bb59211 d646dd7 bb59211 d646dd7 bb59211 d646dd7 bb59211 d646dd7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #!/bin/bash
# 校验:代码中引用的 iconify 图标是否全部在预加载文件里。
# 缺失的图标会在运行时请求 api.iconify.design → 页面图标闪烁/空白。
# 用法: scripts/check_icon_preload.sh ;退出码 0 = 齐全,1 = 有缺失。
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
PRE="$ROOT/web/static/iconify-preload.js"
[ -f "$PRE" ] || { echo "找不到 $PRE"; exit 1; }
# 代码里所有 "前缀:图标名" 引用(ant-design:xxx 等)。
#
# ★ app/processing/modules/ 也必须扫 —— 工作流节点的 icon 是在 Python 里声明的
# (如 data_cleaning.py 的 ``icon = "ant-design:check-circle-outlined"``),
# 这些图标和前端硬编码的一样会被调色板渲染。曾经漏扫这里,导致新增节点
# 用了白名单外的图标而检查脚本仍报"全部已预加载"。
#
# Python 文件里会有 ``cuda:0`` / ``-c:v`` 之类的噪声,但下面只认 ant-design:
# 前缀,噪声会被过滤掉。
USED="$(grep -rhoE "[a-z0-9-]+:[a-z0-9-]+" \
"$ROOT/web/workflow-studio/src" "$ROOT/web/static/js" "$ROOT/web/templates" \
"$ROOT/app/processing/modules" 2>/dev/null \
| sort -u)"
MISSING=""
while IFS= read -r ref; do
# 只检查 ant-design 前缀(预加载文件目前只包含 ant-design)
case "$ref" in
ant-design:*) ;;
*) continue ;;
esac
name="${ref#ant-design:}"
if ! grep -q "'${name}': { body" "$PRE"; then
# 指出是谁声明的,便于补齐
WHERE="$(grep -rlE "[\"']?${ref}[\"']?" \
"$ROOT/web/workflow-studio/src" "$ROOT/web/static/js" "$ROOT/web/templates" \
"$ROOT/app/processing/modules" 2>/dev/null \
| sed "s|^$ROOT/||" | paste -sd, -)"
MISSING="$MISSING"$'\n'" $ref ← ${WHERE:-未知位置}"
fi
done <<< "$USED"
if [ -n "$MISSING" ]; then
echo "以下图标未预加载(iconify-icon 会去 api.iconify.design 拉,页面卡顿/空白)。"
echo "请改用 $PRE 白名单里的图标,或把图标数据补进去:"
echo "$MISSING"
exit 1
fi
echo "全部引用图标均已预加载 ✓"
|