v1.0.1 — Hotfix(description + argparse JSON 化)🔧
发布日期:2026-08-31 · npm
@tianbuyu-wwx/dsh-formatforge@1.0.1(latest) · 测试 569 passed / 0 fail
主题:v1.0.0 发布后实测发现的小问题 + argparse UX 改进。
修复内容
1. description 字符串修正(npm 搜索结果一致性)
v1.0.0 npm 包 description 字段仍含 'v0.14.0' 字符串(被遗漏),影响 npm 搜索结果显示的版本号。
修法:description 字符串 v0.14.0 → v1.0.0。
2. argparse 错误 JSON 化(v0.14.1 候选 #1)
之前 argparse 错误(未知子命令、无效参数值)走 stderr + exit 2 —— 破坏"stdout 是唯一协议出口"约定。
dsh 调用方需要 redirect stderr 才能区分"协议输出"和"argparse 错误",体验差。
修法:main() 在 parser.parse_args() 时临时替换 sys.stderr 为 _SilentStream(不写入),让 argparse usage 静默;SystemExit 时走 _fail("internal", ...) 输出协议 JSON 到 stdout。
实测:
formatforge nonexistent→ stdout JSON{ok:false, error.kind:internal}, stderr 静默, exit 70 ✓formatforge formats --category bad→ stdout JSON, stderr 静默, exit 70 ✓formatforge --help→ stdout 正常 usage, exit 0 ✓(不触发 error 路径)
3. 测试修正
- 新增
TestArgparseJsonOutput(2 测试) - 修
test_category_invalid:旧断言依赖 argparse stderr 文本输出
升级
npm install @tianbuyu-wwx/dsh-formatforge@latestAPI 完全向后兼容(无破坏性改动)。
测试
- 569 passed / 0 fail(v1.0.0 567 → v1.0.1 569,+2)
- ruff ✓ / format ✓ / mypy ✓
- CI 7/7 全绿
文件变更
packages/dsh-formatforge/package.json(description 修正)formatforge/__main__.py(argparse JSON 化)test/unit/test_cli_protocol.py(新增 2 测试 + 修 1 测试)
完整变更见 CHANGELOG.md。