用途与实际影响
这项功能怎样使用
为什么需要它
整个 themes 目录可能还有其他主题,直接覆盖或清空很容易误伤;同名 Verdant 文件也可能有手工修改。
举个实际例子
把主题更新为当前版,但留下旧的 Verdant。脚本比较摘要,有差异就先复制到 old-themes,随后只更新两份专属 CSS。
最后我会得到什么
得到安装与核对报告,能找到旧文件备份;恢复旧版需要明确选择备份并恢复,脚本没有独立 restore 命令。
正常时
两份本项目主题文件都与当前源版本一致。
发现问题时
旧版本与当前版不同时先留备份,再逐份更新并核对。
入口不可用或证据不足时
找不到默认主题目录时请本人指定;目录不可写则说明原因,不清空其他主题。
从哪里开始
运行 python tools/install_theme.py install,可用 --theme-dir 指定 Typora 主题目录;随后运行 python tools/install_theme.py verify 并在 Typora 切换检查。
需要准备什么
- 是否安装或核对 Verdant Mint
- 使用非默认主题目录时给出目标目录
从开始到拿到结果
- 1
比较原有文件
只看本项目文件的摘要与差异,不覆盖无关主题。
- 2
备份再安装
差异旧版先留备份,新文件再原子替换。
- 3
核对安装与显示
verify 查文件;Typora 中仍要手动选择和看页面,想撤回需用对应备份。
技术实现与依据
这里保留实现、关键条件、精确入口、历史记录和验证结果。
两文件安装摘要通过关键规则与设计选择
默认目录来自 Windows APPDATA/Typora/themes,也接受明确 --theme-dir。
不触碰无关主题、程序、注册表或许可。
verify 只读;安装成功和当前选中主题分别判断。
本模块用到的名词
- 幂等安装
- 重复执行同一版本不会要求用户清空目录。
专业定义
只动自己的两份 CSS,替换前保留旧版
解决什么
每个文件原子替换,不代表两份文件是一次整体事务;中断后可再次运行安装与 verify 收敛。
当前怎样实现
- install_theme.py 对每份 relative path 算源码和安装摘要,不同则 backup_existing 到 old-themes 的对应子目录并使用时间戳后缀。
- atomic_copy 先写同目录临时文件,copy2 后 os.replace;verify 返回 typora-theme-pack.install.v1 和逐文件 matches。
执行流程
- 1
定位明确主题目录
- 2
逐文件比对摘要
- 3
差异旧版先备份
- 4
原子替换本项目文件
- 5
verify 核对
边界
- 默认目录为 Windows 路线;显式目录不等于完整跨平台产品验收。
- 没有自动激活主题或专门回滚命令。
失败与恢复
- 写入中断或两文件不一致
- 保留可用旧版/备份,按逐文件结果重跑收敛。
真实入口
tools/install_theme.py精确安装与核对
如何验证
- 本次两文件 SHA-256 匹配;隔离安装测试确认无关主题保留。
与其他模块的关系
负责文件到位,编辑器负责选择并加载主题。
