鏇存柊鏂囨。
This commit is contained in:
@@ -120,6 +120,61 @@ def categorize_file(file_path):
|
||||
# 如果目录名在映射中,使用映射的名称,否则使用目录名
|
||||
return category_map.get(first_dir, first_dir)
|
||||
|
||||
def remove_deleted_files_from_nav(nav, existing_files=None, docs_dir='docs'):
|
||||
"""从导航配置中删除已不存在的文件"""
|
||||
deleted_files = []
|
||||
|
||||
def clean_item(item):
|
||||
"""递归清理导航项,删除不存在的文件"""
|
||||
if isinstance(item, dict):
|
||||
# 处理字典类型(分类)
|
||||
cleaned_dict = {}
|
||||
for key, value in item.items():
|
||||
if isinstance(value, list):
|
||||
# 递归处理列表
|
||||
cleaned_list = []
|
||||
for subitem in value:
|
||||
cleaned = clean_item(subitem)
|
||||
if cleaned is not None:
|
||||
cleaned_list.append(cleaned)
|
||||
|
||||
# 如果列表不为空,保留分类
|
||||
if cleaned_list:
|
||||
cleaned_dict[key] = cleaned_list
|
||||
elif isinstance(value, str):
|
||||
# 检查文件是否存在
|
||||
file_path = os.path.join(docs_dir, value.replace('/', os.sep))
|
||||
if os.path.exists(file_path) or value == 'index.md':
|
||||
cleaned_dict[key] = value
|
||||
else:
|
||||
deleted_files.append(value)
|
||||
else:
|
||||
# 其他类型,保留
|
||||
cleaned_dict[key] = value
|
||||
|
||||
# 如果字典为空,返回None表示删除
|
||||
return cleaned_dict if cleaned_dict else None
|
||||
elif isinstance(item, str):
|
||||
# 检查文件是否存在
|
||||
file_path = os.path.join(docs_dir, item.replace('/', os.sep))
|
||||
if os.path.exists(file_path) or item == 'index.md':
|
||||
return item
|
||||
else:
|
||||
deleted_files.append(item)
|
||||
return None
|
||||
else:
|
||||
# 其他类型,保留
|
||||
return item
|
||||
|
||||
# 处理导航列表
|
||||
new_nav = []
|
||||
for item in nav:
|
||||
cleaned = clean_item(item)
|
||||
if cleaned is not None:
|
||||
new_nav.append(cleaned)
|
||||
|
||||
return new_nav, deleted_files
|
||||
|
||||
def add_files_to_nav(nav, missing_files):
|
||||
"""将缺失的文件添加到导航配置中"""
|
||||
# 创建分类字典
|
||||
@@ -154,7 +209,7 @@ def add_files_to_nav(nav, missing_files):
|
||||
return nav
|
||||
|
||||
def main():
|
||||
print("开始自动将docs目录下的文件添加到mkdocs.yml中...")
|
||||
print("开始自动同步docs目录和mkdocs.yml导航配置...")
|
||||
print("=" * 60)
|
||||
|
||||
# 1. 加载当前导航配置
|
||||
@@ -171,39 +226,65 @@ def main():
|
||||
nav_files = get_nav_files(nav)
|
||||
print(f" 导航中已有 {len(nav_files)} 个文件")
|
||||
|
||||
# 4. 找出缺失的文件
|
||||
# 4. 检查并删除已删除的文件
|
||||
print("4. 检查已删除的文件...")
|
||||
updated_nav, deleted_files = remove_deleted_files_from_nav(nav, all_md_files)
|
||||
|
||||
if deleted_files:
|
||||
print(f" 发现 {len(deleted_files)} 个文件已删除:")
|
||||
for i, file_path in enumerate(deleted_files, 1):
|
||||
print(f" {i:2d}. {file_path}")
|
||||
nav = updated_nav
|
||||
# 重新获取导航文件列表(已更新)
|
||||
nav_files = get_nav_files(nav)
|
||||
else:
|
||||
print(" ✓ 没有发现已删除的文件")
|
||||
|
||||
# 5. 找出缺失的文件(需要添加到导航的)
|
||||
missing_files = []
|
||||
for md_file in all_md_files:
|
||||
# 将路径统一为Unix风格进行比较
|
||||
if md_file not in nav_files and md_file != 'index.md':
|
||||
missing_files.append(md_file)
|
||||
|
||||
if not missing_files:
|
||||
print("✓ 所有文件已在导航中,无需更新")
|
||||
# 6. 汇总变更
|
||||
has_changes = len(deleted_files) > 0 or len(missing_files) > 0
|
||||
|
||||
if not has_changes:
|
||||
print("\n✓ 导航配置已是最新,无需更新")
|
||||
return
|
||||
|
||||
print(f"4. 发现 {len(missing_files)} 个文件不在导航中:")
|
||||
for i, file_path in enumerate(missing_files, 1):
|
||||
print(f" {i:2d}. {file_path}")
|
||||
# 显示变更摘要
|
||||
print("\n5. 变更摘要:")
|
||||
if deleted_files:
|
||||
print(f" 将删除 {len(deleted_files)} 个已不存在的文件")
|
||||
if missing_files:
|
||||
print(f" 将添加 {len(missing_files)} 个新文件:")
|
||||
for i, file_path in enumerate(missing_files, 1):
|
||||
print(f" {i:2d}. {file_path}")
|
||||
|
||||
# 5. 确认是否继续
|
||||
print("\n5. 是否继续添加这些文件到mkdocs.yml?")
|
||||
# 7. 确认是否继续
|
||||
print("\n6. 是否继续更新mkdocs.yml?")
|
||||
response = input(" 输入 'y' 继续,其他键取消: ")
|
||||
|
||||
if response.lower() != 'y':
|
||||
print("操作已取消")
|
||||
return
|
||||
|
||||
# 6. 添加文件到导航
|
||||
print("\n6. 正在更新mkdocs.yml...")
|
||||
updated_nav = add_files_to_nav(nav, missing_files)
|
||||
# 8. 添加文件到导航
|
||||
print("\n7. 正在更新mkdocs.yml...")
|
||||
if missing_files:
|
||||
updated_nav = add_files_to_nav(updated_nav, missing_files)
|
||||
|
||||
# 7. 保存配置
|
||||
# 9. 保存配置
|
||||
save_mkdocs_nav(updated_nav)
|
||||
|
||||
print("\n" + "=" * 60)
|
||||
print("完成!mkdocs.yml已更新")
|
||||
print(f"总计添加了 {len(missing_files)} 个文件到导航中")
|
||||
if deleted_files:
|
||||
print(f"删除了 {len(deleted_files)} 个已不存在的文件")
|
||||
if missing_files:
|
||||
print(f"添加了 {len(missing_files)} 个新文件到导航中")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user