桌面应用(svfs-studio / svfs-client)要用的前置改动: * 新增 src/sqlite_vfs/cli/main.py:`svfs <子命令>` 统一入口,旧的独立命令 (vfspack / vfsunpack / …)保留为别名,两套跑同一段 execute(args);各子命令 因此从 sys.exit() 改成返回退出码,便于被复用; * FolderPacker.pack_folder(progress=…):每处理一个条目(目录也算)回调一次, 供 GUI 进度条使用;只有传了回调时才做"只 stat、不读内容"的预扫描,CLI 的 行为与开销不变;回调抛出的异常一路上抛——GUI 的中断语义就靠它; * publish.default_cache_dir():对象缓存目录(客户端设置里可改);load_manifest 对"误把服务器根地址当清单填进来"给出可用插件列表的提示,而不是只甩一个 format=None。 测试:新增 tests/test_cli_main.py、tests/test_pack_progress.py,test_publish.py 补充。
36 lines
1.4 KiB
Python
36 lines
1.4 KiB
Python
import os
|
|
import sys
|
|
|
|
|
|
def generate_markdown_from_py_files(directory, output_file):
|
|
with open(output_file, "w", encoding="utf-8") as md_file:
|
|
for root, dirs, files in os.walk(directory):
|
|
# 排除 venv 目录
|
|
dirs[:] = [d for d in dirs if d != ".venv"]
|
|
dirs[:] = [d for d in dirs if d != ".vscode"]
|
|
dirs[:] = [d for d in dirs if d != "Scripts"]
|
|
dirs[:] = [d for d in dirs if d != "build"]
|
|
dirs[:] = [d for d in dirs if d != "dist"]
|
|
dirs[:] = [d for d in dirs if d != "node_modules"]
|
|
for file in files:
|
|
if (
|
|
file.endswith(".py")
|
|
or file.endswith(".rs")
|
|
or file.endswith(".toml")
|
|
):
|
|
file_path = os.path.join(root, file)
|
|
md_file.write(f"`{file_path}`\n")
|
|
md_file.write("```python\n")
|
|
with open(file_path, "r", encoding="utf-8") as py_file:
|
|
md_file.write(py_file.read())
|
|
md_file.write("\n```\n\n")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# 指定目录和输出文件名
|
|
target_directory = sys.argv[1] # 替换为你的目标目录
|
|
output_markdown_file = "output.md" # 输出的 Markdown 文件名
|
|
|
|
generate_markdown_from_py_files(target_directory, output_markdown_file)
|
|
print(f"Markdown 文件已生成:{output_markdown_file}")
|