Skip to content

feat(cli): 机器可读错误与退出码语义 - #4

Merged
UltimeLam merged 4 commits into
mainfrom
feat/error-model
Nov 12, 2026
Merged

UltimeLam merged 4 commits into
mainfrom
feat/error-model

Conversation

@UltimeLam

Copy link
Copy Markdown
Contributor

Summary

  • 新增 CliError / toErrorShape:错误带 code / path / hint / details / exitCode;普通异常退化为 code: 'ERROR'。
  • --json 作为保留布尔 flag:错误以 { "error": { … } } 只写 stderr,不污染 stdout。
  • 退出码统一:0 成功 / 1 命令执行失败 / 2 用法或配置错误;无命令与未知命令从 1 改为 2。
  • 未知命令给最近候选;单命令 help 缺省时按命令名生成。
  • 明确边界:本包不发 bin、不做命令发现,各产品包自带入口(core / viewer / checks 各自发布)。

Test plan

  • pnpm check
  • pnpm test(19 passed)
  • pnpm build(attw / publint 通过)

兼容性

0.x minor:无命令 / 未知命令退出码由 1 变为 2,README 与 CHANGELOG 已写迁移说明。

新增 CliError / toErrorShape,错误带 code / path / hint / details / exitCode;
--json 时错误以结构化 JSON 只写 stderr。退出码统一为 0 成功 / 1 执行失败 /
2 用法或配置错误,无命令与未知命令从 1 改为 2,未知命令给最近候选。

同时明确本包不发 bin、不做命令发现:各产品包自带入口。
@UltimeLam
UltimeLam merged commit fc08e7e into main Nov 12, 2026
2 checks passed
@UltimeLam
UltimeLam deleted the feat/error-model branch November 12, 2026 10:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant