Skip to content

🔄 ParseUpdateOutput

解析 composer update 的文本输出,提取更新的包数量与警告信息,返回 *UpdateResult

何时使用

当你已拿到 composer update 的完整输出,需要程序化统计本次更新了多少个包、是否有警告时使用。与 ParseInstallOutput 类似,但只关注 update 计数。

签名

go
func ParseUpdateOutput(output string) *UpdateResult

参数

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

返回值

  • *UpdateResult:更新结果,含 PackagesUpdatedint)、Output(原始输出)、Warnings[]string,包含 Warning 字样的行)。

示例

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("update", "symfony/console")
	if err != nil {
		log.Printf("update 返回错误: %v(继续解析输出)", err)
	}

	result := composer.ParseUpdateOutput(output)
	fmt.Printf("更新了 %d 个包\n", result.PackagesUpdated)
	for _, w := range result.Warnings {
		fmt.Println("警告:", w)
	}
}

进阶

  • 🔍 解析逻辑:用正则 (\d+)\s+update 匹配 Package operations: X updates 行;逐行扫描含 Warning 的行。
  • ⚠️ 解析器从不返回错误——无法匹配时 PackagesUpdated 为 0。注意 update 可能同时有安装/移除动作,但本解析器只统计 update 计数;如需完整三项统计,用 ParseInstallOutput
  • 🔗 单包 require/remove 的解析见 ParseRequireOutputParseRemoveOutput

基于 MIT 许可证发布