📦 ParseInstallOutput
解析 composer install 的文本输出,提取安装/更新/移除的包数量与警告信息,返回 *InstallResult。
何时使用
当你已拿到 composer install 的完整输出,需要程序化统计本次安装了多少个包、有没有警告时使用。常用于 CI 流水线中记录安装结果或判断是否需要重试。
签名
go
func ParseInstallOutput(output string) *InstallResult参数
| 参数 | 类型 | 说明 |
|---|---|---|
output | string | composer install 的原始输出 |
返回值
*InstallResult:安装结果,含PackagesInstalled、PackagesUpdated、PackagesRemoved(均为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("install")
if err != nil {
log.Printf("install 返回错误: %v(继续解析输出)", err)
}
result := composer.ParseInstallOutput(output)
fmt.Printf("安装 %d,更新 %d,移除 %d\n",
result.PackagesInstalled, result.PackagesUpdated, result.PackagesRemoved)
for _, w := range result.Warnings {
fmt.Println("警告:", w)
}
}进阶
- 🔍 解析逻辑:用正则
(\d+)\s+install/update/removal匹配Package operations: X installs, Y updates, Z removals行;逐行扫描含Warning的行收集到Warnings。 - ⚠️ 解析器从不返回错误——无法匹配时计数字段为 0。调用方应结合
install命令本身的返回 error 判断成败。 - 🔗 对应的更新解析见
ParseUpdateOutput。