mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-03-24 20:34:29 +08:00
- 将模块配置提取到共享的 module-config.sh 文件中 - 在 batch-generate.sh 中使用 get_source_dir 和 is_valid_module 函数 - 更新可用模块列表显示为动态获取 - 在 generate-examples.sh 中添加命名空间参数和详细的示例生成指南 - 优化 update-vitepress-nav.sh 中的用户界面和添加重复检查 - 修改 validate-all.sh 中的代码块验证以避免中断流程 - 改进 validate-frontmatter.sh 中的 frontmatter 检测逻辑 - 将 find 命令结果存储为数组以提高处理准确性
58 lines
1.5 KiB
Bash
58 lines
1.5 KiB
Bash
#!/bin/bash
|
||
# 验证 Frontmatter 格式
|
||
# 用法: validate-frontmatter.sh <文件路径>
|
||
|
||
set -e
|
||
|
||
FILE="$1"
|
||
|
||
if [ -z "$FILE" ]; then
|
||
echo "用法: $0 <文件路径>"
|
||
exit 1
|
||
fi
|
||
|
||
if [ ! -f "$FILE" ]; then
|
||
echo "错误: 文件不存在: $FILE"
|
||
exit 1
|
||
fi
|
||
|
||
echo "验证 Frontmatter: $FILE"
|
||
|
||
# 检查是否有 Frontmatter(限制在前几行,避免匹配正文中的 '---')
|
||
if ! head -n 5 "$FILE" | grep -q "^---$"; then
|
||
echo "✗ 错误: 文件缺少 Frontmatter"
|
||
exit 1
|
||
fi
|
||
|
||
# 提取 Frontmatter 内容(第一个 --- 到第二个 --- 之间)
|
||
FRONTMATTER=$(sed -n '/^---$/,/^---$/p' "$FILE" | sed '1d;$d')
|
||
|
||
if [ -z "$FRONTMATTER" ]; then
|
||
echo "✗ 错误: Frontmatter 为空"
|
||
exit 1
|
||
fi
|
||
|
||
# 检查必需字段: title
|
||
if ! echo "$FRONTMATTER" | grep -q "^title:"; then
|
||
echo "✗ 错误: 缺少必需字段: title"
|
||
exit 1
|
||
fi
|
||
|
||
# 检查必需字段: description
|
||
if ! echo "$FRONTMATTER" | grep -q "^description:"; then
|
||
echo "✗ 错误: 缺少必需字段: description"
|
||
exit 1
|
||
fi
|
||
|
||
# 检查 outline 字段值(如果存在)
|
||
if echo "$FRONTMATTER" | grep -q "^outline:"; then
|
||
OUTLINE_VALUE=$(echo "$FRONTMATTER" | grep "^outline:" | sed 's/outline:\s*//')
|
||
if [ "$OUTLINE_VALUE" != "deep" ] && [ "$OUTLINE_VALUE" != "false" ] && ! echo "$OUTLINE_VALUE" | grep -qE '^\[.*\]$'; then
|
||
echo "⚠ 警告: outline 字段值可能无效: $OUTLINE_VALUE"
|
||
echo " 有效值: deep, false, [2,3]"
|
||
fi
|
||
fi
|
||
|
||
echo "✓ Frontmatter 验证通过"
|
||
exit 0
|