Files
MujicaUI/docs/components/272-command-execution-card.md

1.6 KiB

272 CommandExecutionCard 命令执行卡片

用途

显示一条命令的执行:命令、工作目录、带 ANSI 颜色的输出、退出码与耗时,执行中可请求中止。

最小示例

run := agent.CommandRun{Command: "go test ./...", Dir: "~/court", Running: true, Output: "\x1b[32mok\x1b[0m court\n"}
view := func(c *ui.Context) {
	core.Use(c, core.Settings{})
	if agent.CommandExecutionCard(c, run, agent.CommandExecutionCardOptions{}).Changed() {
		fmt.Println("abort the process")
	}
}
ui.Render(view, 400, 300, 1)

签名:func CommandExecutionCard(c *ui.Context, run CommandRun, opts CommandExecutionCardOptions) ChoiceResult。Command 为空或 Height 为负时 panic。

参数

字段 类型 默认值 含义
Height float32 240 输出区高度。
Disabled bool false 禁止中止。
Still bool false 停止执行中动画;系统减少动画时也自动静止。

状态

  • CommandRun 字段:Command、Dir、Output、Running、ExitCode、Duration。
  • 输出由 internal.ParseAnsi 解析,颜色映射到主题;样式可跨行延续;追加输出只解析新增行。
  • 输出虚拟化并跟随末尾,用户向上滚动后停止跟随。
  • 退出码以图标和“退出码 N”文字显示。

事件

  • Changed():用户点击了“中止”;终止进程由调用方完成。

键盘操作

  • Tab 到“中止”,Enter / Space 触发;输出区可滚动。

限制

  • 只支持 SGR 颜色与样式,其它转义序列原样显示。
  • 不运行命令,也不提供 PTY。