📋 ParseStatusOutput
解析 composer status 的文本输出,判断已安装依赖是否有本地修改,返回 *StatusResult。
何时使用
当你已拿到 composer status 的输出,需要程序化检测 vendor 目录中的依赖文件是否被本地改动时使用。输出为空表示无修改;任何非空行表示一个被修改的文件。它是 StatusStructured 内部调用的解析器。
签名
go
func ParseStatusOutput(output string) *StatusResult参数
| 参数 | 类型 | 说明 |
|---|---|---|
output | string | composer status 的原始输出 |
返回值
*StatusResult:状态结果,含Modified(bool,输出非空即为true)、Files([]string,被修改的文件列表)、Output(原始输出)。
示例
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("status")
if err != nil {
log.Fatal(err)
}
result := composer.ParseStatusOutput(output)
if result.Modified {
fmt.Printf("发现 %d 个本地修改的文件:\n", len(result.Files))
for _, f := range result.Files {
fmt.Println(" -", f)
}
} else {
fmt.Println("无本地修改")
}
}进阶
- 🔍 解析逻辑:
TrimSpace后为空 →Modified=false;否则按\n分割,每个非空行加入Files并置Modified=true。 - 🚀 一步到位执行命令并解析用
StatusStructured();带选项执行用StatusWithOptions(options)。 - 🔗 同系列诊断解析见
ParseDiagnoseOutput、ParseCheckOutput。