Skip to content

📦 ParseInstallOutput

解析 composer install 的文本输出,提取安装/更新/移除的包数量与警告信息,返回 *InstallResult

何时使用

当你已拿到 composer install 的完整输出,需要程序化统计本次安装了多少个包、有没有警告时使用。常用于 CI 流水线中记录安装结果或判断是否需要重试。

签名

go
func ParseInstallOutput(output string) *InstallResult

参数

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

返回值

  • *InstallResult:安装结果,含 PackagesInstalledPackagesUpdatedPackagesRemoved(均为 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

基于 MIT 许可证发布