📈 ParseComposerOutdatedJSON
解析 composer outdated --format=json 的 JSON 输出,返回结构化的 OutdatedResult。
何时使用
当你已拿到 composer outdated 的 JSON 输出,需要程序化列出哪些包可升级、当前版本与最新版本对比时使用。它是 GetOutdatedInfo 内部调用的解析器。
签名
go
func ParseComposerOutdatedJSON(output string) (*OutdatedResult, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
output | string | composer outdated --format=json 的原始输出 |
返回值
*OutdatedResult:过时包结果,Installed为[]OutdatedPackage,Count自动设置为已安装条目数。error:JSON 反序列化失败时返回错误(内部委托ParseOutdatedResult)。
每个 OutdatedPackage 含 Name、Latest、Installed(当前版本)、LatestStatus(semver-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。