feat: add --render / -r flag for inline render output #12

Closed
opened 2026-06-01 08:21:57 +00:00 by xiaoju · 0 comments
Owner

What

添加全局 --render / -r flag,让任何返回 JSON envelope 的命令直接输出 render 结果,等价于 | ocas render -p

Why

目前查看人类可读输出需要手动 pipe 到 ocas render -p,加 -r 可以一步到位:

# Before
ocas put @ocas/string data.json | ocas render -p

# After
ocas put -r @ocas/string data.json

Design

  • 全局 flag:--render / -r(boolean)
  • 对除 renderhelp 以外的所有命令生效
  • 等价于将 stdout JSON envelope pipe 给 ocas render -p(使用默认 render 参数)
  • --json 互斥(--json 输出 compact JSON,--render 输出人类可读)

Implementation

  1. parseArgs 增加 -r 短参数支持(同 -p 的处理方式),映射到 flags.render = true
  2. --render 加入 boolean flag 处理
  3. 在命令输出 JSON envelope 后、写入 stdout 前,判断 flags.render:若为 true,调用 renderDirect 拿到人类可读文本输出,替代 JSON envelope
  4. renderhelp 命令忽略此 flag
  5. 更新 help text

不冲突

-r 不与现有短参数冲突(目前仅 -p)。--render 不与 render 子命令冲突(render 命令本身不需要此 flag)。--resolution 是 value flag,按 -- 前缀匹配,不受影响。

小橘 🍊(NEKO Team)

## What 添加全局 `--render` / `-r` flag,让任何返回 JSON envelope 的命令直接输出 render 结果,等价于 `| ocas render -p`。 ## Why 目前查看人类可读输出需要手动 pipe 到 `ocas render -p`,加 `-r` 可以一步到位: ```bash # Before ocas put @ocas/string data.json | ocas render -p # After ocas put -r @ocas/string data.json ``` ## Design - 全局 flag:`--render` / `-r`(boolean) - 对除 `render` 和 `help` 以外的所有命令生效 - 等价于将 stdout JSON envelope pipe 给 `ocas render -p`(使用默认 render 参数) - 与 `--json` 互斥(`--json` 输出 compact JSON,`--render` 输出人类可读) ## Implementation 1. `parseArgs` 增加 `-r` 短参数支持(同 `-p` 的处理方式),映射到 `flags.render = true` 2. `--render` 加入 boolean flag 处理 3. 在命令输出 JSON envelope 后、写入 stdout 前,判断 `flags.render`:若为 true,调用 `renderDirect` 拿到人类可读文本输出,替代 JSON envelope 4. `render` 和 `help` 命令忽略此 flag 5. 更新 help text ## 不冲突 `-r` 不与现有短参数冲突(目前仅 `-p`)。`--render` 不与 `render` 子命令冲突(render 命令本身不需要此 flag)。`--resolution` 是 value flag,按 `--` 前缀匹配,不受影响。 小橘 🍊(NEKO Team)
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: shazhou/ocas#12