Skip to content

ix64/srcdocgen

Repository files navigation

srcdocgen

PyPI Python License Downloads

把软件著作权源代码材料从手工整理变成可复核的自动化流程。

srcdocgen 是一个面向软件著作权申请场景的 Python CLI/TUI 工具。它从 Git 仓库读取已跟踪的源码文件,按项目类型自动筛选、剥离注释和空行,并一键导出可提交前复核的源代码材料 PDF、DOCX 和 manifest。

srcdocgen TUI 演示

对比

准备软著源代码材料时,最耗时的部分不是写代码,而是反复判断哪些文件该纳入、如何排除依赖和生成物、如何整理成固定页数的 PDF/DOCX。

手工整理 Word 模板脚本 srcdocgen
文件筛选 人工逐个选择 需自己写规则 Git + 内置模板自动筛选
注释剥离 正则 / 手删 正则容易误删 Pygments token 级精准剥离
输出格式 手动排版 通常仅 DOCX PDF + DOCX + manifest
源码不足 3000 行 自己凑 / 补空 看脚本实现 全量导出 + 明确提示
可追溯 无记录 无记录 manifest.json 完整记录
交互确认 ✅ TUI 终端界面

快速开始

srcdocgen 需要 Python 3.12 或更高版本。

最简用法

在 Git 仓库根目录,一行启动交互界面:

pipx run srcdocgen

安装

推荐用 pipx 安装,让命令行工具运行在独立环境里:

pipx install srcdocgen

如果系统默认 Python 低于 3.12,可以指定解释器:

pipx install --python python3.12 srcdocgen

也可以用 pip 安装到当前虚拟环境:

pip install srcdocgen

三步生成材料

以下示例假设目标项目是一个 Git 仓库,路径为 ./project

1. 初始化配置

srcdocgen init-config \
  --repo ./project \
  --template python \
  --software-name "示例系统" \
  --software-version "V1.0"

这会在目标仓库根目录写入 srcdocgen.toml。你可以在其中调整软件名称、版本号、模板、包含/排除规则、脱敏开关、页数、每页行数和制表符宽度。

2. 生成 PDF、DOCX 和清单

srcdocgen generate --repo ./project --out-dir ./softdoc

生成结果写入 ./softdoc

softdoc/
├── source-code.pdf       # A4 等宽字体排版,带页眉页码
├── source-code.docx      # 同内容 Word 格式
└── manifest.json         # 完整的筛选和导出记录

3. 交互式复核(可选)

如果你想在导出前检查文件选择结果:

srcdocgen tui --repo ./project --out-dir ./softdoc

输出效果

生成的 PDF 效果预览

PDF 使用 A4 页面、等宽字体,默认每页 50 行、共 60 页。页眉左侧显示软件名称和版本号,右侧显示页码,页眉与正文之间带横线分隔。在缺少系统 CJK 字体时会自动使用内置的 Noto Sans Mono CJK SC fallback。

manifest.json 记录每个文件的筛选结果,方便人工复核和留档追踪:

{
  "path": "srcdocgen/export.py",
  "language": "python",
  "status": "included",
  "reason": "eligible source file",
  "original_line_count": 145,
  "filtered_line_count": 118,
  "selected_line_count": 118
}

排除的文件同样有据可查:

{
  "path": ".github/workflows/ci.yml",
  "language": "config-file",
  "status": "excluded",
  "reason": "matched exclude glob: **/*.yml"
}

内置模板

模板 适用场景
android Android 应用
ios iOS 应用
web 前端 Web 项目
node Node.js 后端
python Python 项目
java Java 项目
go Go 项目
generic 其他技术栈

模板提供默认的包含/排除 glob、业务关键词和风险关键词。你可以在 srcdocgen.toml 中继续追加项目自己的规则。

生成规则

  • 文件列表来自 git ls-files,srcdocgen 不会修改目标仓库。
  • 自动排除依赖目录、构建产物、测试文件、文档、锁文件、生成代码和二进制资源。
  • 使用 Pygments token 剥离注释,避免误删字符串、URL、正则中的注释符号。
  • 当过滤后源码不足 3000 行时,生成全部可纳入源码并给出提示;不补空、不伪造代码。
  • 当源码超过 3000 行时,取前 30 页连续源码和后 30 页连续源码。

适合的项目

  • 中小型 Web、Node.js、Python、Java、Go 项目
  • Android 和 iOS 应用源码
  • 需要从多个项目批量生成软著材料的团队
  • 希望保留 manifest 以便复核纳入文件、排除原因和导出结果的项目

如果项目没有使用 Git,建议先把源码纳入 Git 管理后再运行 srcdocgen。

License

MIT License. See LICENSE.

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Contributors