🔄 ParseUpdateOutput
解析 composer update 的文本输出,提取更新的包数量与警告信息,返回 *UpdateResult。
何时使用
当你已拿到 composer update 的完整输出,需要程序化统计本次更新了多少个包、是否有警告时使用。与 ParseInstallOutput 类似,但只关注 update 计数。
签名
go
func ParseUpdateOutput(output string) *UpdateResult参数
| 参数 | 类型 | 说明 |
|---|---|---|
output | string | composer update 的原始输出 |
返回值
*UpdateResult:更新结果,含PackagesUpdated(int)、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 的解析见
ParseRequireOutput、ParseRemoveOutput。