Skip to content

📋 ParseStatusOutput

解析 composer status 的文本输出,判断已安装依赖是否有本地修改,返回 *StatusResult

何时使用

当你已拿到 composer status 的输出,需要程序化检测 vendor 目录中的依赖文件是否被本地改动时使用。输出为空表示无修改;任何非空行表示一个被修改的文件。它是 StatusStructured 内部调用的解析器。

签名

go
func ParseStatusOutput(output string) *StatusResult

参数

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

返回值

  • *StatusResult:状态结果,含 Modifiedbool,输出非空即为 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)
  • 🔗 同系列诊断解析见 ParseDiagnoseOutputParseCheckOutput

基于 MIT 许可证发布