Skip to content

📈 StatusStructured

检查已安装依赖是否有本地修改,并返回结构化结果(是否修改、修改文件列表)。

何时使用

CI 中需要以布尔值或文件清单形式判断依赖是否被改动,而非解析纯文本输出时使用。

签名

go
func (c *Composer) StatusStructured() (*StatusResult, error)

参数

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

返回值

  • *StatusResult:状态检查结果
  • error:执行命令失败时返回错误
go
type StatusResult struct {
    Modified bool     `json:"modified"`
    Files    []string `json:"files,omitempty"`
    Output   string   `json:"output,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.StatusStructured()
    if err != nil {
        log.Fatalf("检查状态失败: %v", err)
    }

    if result.Modified {
        fmt.Printf("发现 %d 个修改的文件\n", len(result.Files))
        for _, f := range result.Files {
            fmt.Println("- " + f)
        }
    } else {
        fmt.Println("依赖未被修改")
    }
}

进阶

  • 该方法内部调用 composer status,再通过 ParseStatusOutput 解析
  • 解析逻辑:输出为空则 Modified=false,否则每行非空内容计入 Files 并置 Modified=true
  • 原始文本版本见 Status

基于 MIT 许可证发布