🩺 ParseDiagnoseOutput
解析 composer diagnose 的文本输出,按行分类为 ok/warning/error/info 检查项,返回 *DiagnoseResult。
何时使用
当你已拿到 composer diagnose 的输出,需要程序化判断每项检查(HTTP、git、缓存等)的通过状态时使用。它是 DiagnoseStructured 内部调用的解析器。
签名
go
func ParseDiagnoseOutput(output string) *DiagnoseResult参数
| 参数 | 类型 | 说明 |
|---|---|---|
output | string | composer diagnose 的原始输出 |
返回值
*DiagnoseResult:诊断结果,Checks为[]DiagnoseCheck。每个DiagnoseCheck含Name、Status(ok/warning/error/info)、Detail(整行原文)。
示例
go
package main
import (
"fmt"
"log"
"github.com/scagogogo/composer-skills/pkg/composer"
)
func main() {
comp, err := composer.New(composer.DefaultOptions())
if err != nil {
log.Fatal(err)
}
output, err := comp.Run("diagnose")
result := composer.ParseDiagnoseOutput(output)
for _, chk := range result.Checks {
icon := "ℹ️"
switch chk.Status {
case "ok":
icon = "✅"
case "warning":
icon = "⚠️"
case "error":
icon = "❌"
}
fmt.Printf("%s [%s] %s\n", icon, chk.Status, chk.Name)
}
}进阶
- 🔍 解析逻辑:按行扫描,根据前缀判断状态——
[OK]/✓为ok、[WARNING]/⚠为warning、[ERROR]/✗为error,其余为info。 - 📋 只需检查项列表(不含包装结构)可用
ParseDiagnoseOutputAsChecks(output),它返回result.Checks。 - 🚀 一步到位执行命令并解析用
DiagnoseStructured()。 - 🔗 相关健康检查见
HealthCheck()、ParseStatusOutput、ParseCheckOutput。