Skip to content

🎯 CheckStructured

检查 composer.jsoncomposer.lock 是否同步,并返回结构化结果(有效性 + 消息/警告/错误分类)。

何时使用

CI 流水线需要根据 Valid 布尔值决定是否放行,并把错误明细分别上报时使用。

签名

go
func (c *Composer) CheckStructured() (*CheckResult, error)

参数

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

返回值

  • *CheckResult:检查结果,包含 Valid 与分类消息
  • error:执行命令时的错误(注意:有 error 时 Valid 会被置为 false,但仍返回结果)
go
type CheckResult struct {
    Valid    bool     `json:"valid"`
    Messages []string `json:"messages,omitempty"`
    Warnings []string `json:"warnings,omitempty"`
    Errors   []string `json:"errors,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.CheckStructured()
    if err != nil {
        log.Printf("检查出现错误: %v", err)
    }

    if !result.Valid {
        fmt.Println("检查未通过,错误:")
        for _, e := range result.Errors {
            fmt.Println("- " + e)
        }
    } else {
        fmt.Println("检查通过")
    }
}

进阶

  • 解析由 ParseCheckOutput 完成:按行匹配 error/Error/FAIL 归入错误,warning/Warning/WARN 归入警告,其余归入消息
  • 原始文本版本见 Check
  • 若需校验 composer.json schema 严格性,使用 ValidateStructured(见 result_types.go)

基于 MIT 许可证发布