Skip to content

🩺 ParseDiagnoseOutput

解析 composer diagnose 的文本输出,按行分类为 ok/warning/error/info 检查项,返回 *DiagnoseResult

何时使用

当你已拿到 composer diagnose 的输出,需要程序化判断每项检查(HTTP、git、缓存等)的通过状态时使用。它是 DiagnoseStructured 内部调用的解析器。

签名

go
func ParseDiagnoseOutput(output string) *DiagnoseResult

参数

参数类型说明
outputstringcomposer diagnose 的原始输出

返回值

  • *DiagnoseResult:诊断结果,Checks[]DiagnoseCheck。每个 DiagnoseCheckNameStatusok/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()ParseStatusOutputParseCheckOutput

基于 MIT 许可证发布