Skip to content

📈 ParseComposerOutdatedJSON

解析 composer outdated --format=json 的 JSON 输出,返回结构化的 OutdatedResult

何时使用

当你已拿到 composer outdated 的 JSON 输出,需要程序化列出哪些包可升级、当前版本与最新版本对比时使用。它是 GetOutdatedInfo 内部调用的解析器。

签名

go
func ParseComposerOutdatedJSON(output string) (*OutdatedResult, error)

参数

参数类型说明
outputstringcomposer outdated --format=json 的原始输出

返回值

  • *OutdatedResult:过时包结果,Installed[]OutdatedPackageCount 自动设置为已安装条目数。
  • error:JSON 反序列化失败时返回错误(内部委托 ParseOutdatedResult)。

每个 OutdatedPackageNameLatestInstalled(当前版本)、LatestStatussemver-safe-update/update-possible/up-to-date)、Abandoned

示例

go
package main

import (
	"fmt"
	"log"

	"github.com/scagogogo/composer-skills/pkg/composer"
)

func main() {
	output := `{"installed":[{"name":"symfony/console","version":"v5.3.0","latest":"v5.4.0","latest_status":"semver-safe-update"}]}`

	result, err := composer.ParseComposerOutdatedJSON(output)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("共 %d 个过时包\n", result.Count)
	for _, pkg := range result.Installed {
		fmt.Printf("  %s: %s -> %s (%s)\n", pkg.Name, pkg.Installed, pkg.Latest, pkg.LatestStatus)
	}
}

进阶

  • 🔄 本函数等价于 ParseOutdatedResult(output),会自动填充 Count 字段。
  • 🚀 一步到位执行命令并解析用 GetOutdatedInfo();带额外选项用 GetOutdatedInfoWithOptions(options)。注意:composer outdated 在没有过时包时可能返回非零退出码,但输出仍是有效 JSON,封装方法已处理该情况。
  • 🔗 安全审计见 ParseComposerAuditJSON

基于 MIT 许可证发布