Skip to content

🔬 DiagnoseStructured

执行 composer diagnose 并把输出解析为结构化检查列表,每项带 ok/warning/error 状态。

何时使用

需要在程序中根据单项诊断结果(如证书是否正常、Composer 版本是否过期)做条件分支时使用。

签名

go
func (c *Composer) DiagnoseStructured() (*DiagnoseResult, error)

参数

参数类型说明
该方法不接收参数

返回值

  • *DiagnoseResult:诊断结果,包含各检查项
  • error:执行命令时的错误(注意:即使有 error,仍会返回已解析的结果)
go
type DiagnoseResult struct {
    Checks []DiagnoseCheck `json:"checks,omitempty"`
}

type DiagnoseCheck struct {
    Name   string `json:"name"`
    Status string `json:"status"` // "ok", "warning", "error", "info"
    Detail string `json:"detail,omitempty"`
}

示例

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)
    }

    result, err := comp.DiagnoseStructured()
    if err != nil {
        log.Printf("诊断出现错误: %v", err)
    }

    for _, check := range result.Checks {
        fmt.Printf("[%s] %s\n", check.Status, check.Detail)
    }
}

进阶

  • 解析由 ParseDiagnoseOutput 完成:识别 [OK]/[WARNING]/[ERROR]/ 前缀判定状态
  • 原始文本版本见 Diagnose
  • 若需更全面的环境健康摘要,使用 HealthCheck

基于 MIT 许可证发布