✨ ShowPackageInfo
获取指定包的结构化详细信息,内部执行 composer show packageName --format=json 并解析为 *PackageInfo。
何时使用
- 📋 需要字段化的包信息(名称、版本、许可证、作者、依赖等)做后续处理。
- 🤖 脚本中自动提取包的
Homepage或License。 - 🔍 程序化判断包是否被放弃维护。
签名
go
func (c *Composer) ShowPackageInfo(packageName string) (*PackageInfo, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
packageName | string | 要查询的包名 |
返回值
| 值 | 类型 | 说明 |
|---|---|---|
| 结果 | *PackageInfo | 解析后的包信息 |
| 错误 | error | 执行或 JSON 解析失败时返回 |
PackageInfo 主要字段:
| 字段 | 类型 | 说明 |
|---|---|---|
Name | string | 包名 |
Version | string | 当前版本 |
Description | string | 描述 |
Type | string | 包类型 |
Homepage | string | 主页地址 |
License | []string | 许可证列表 |
Authors | []PackageAuthor | 作者列表 |
Require | map[string]string | 生产依赖 |
RequireDev | map[string]string | 开发依赖 |
Abandoned | interface{} | 是否放弃维护(bool 或 string) |
示例
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.Fatalf("初始化失败: %v", err)
}
info, err := comp.ShowPackageInfo("symfony/console")
if err != nil {
log.Fatalf("获取包信息失败: %v", err)
}
fmt.Printf("包 %s 版本 %s\n", info.Name, info.Version)
fmt.Printf("主页: %s\n", info.Homepage)
fmt.Printf("许可证: %v\n", info.License)
}进阶
文本输出
只需原始文本输出时用 ShowPackage(composer show pkg)。
解析函数
ParsePackageInfo(output string) 可单独解析任意 composer show --format=json 输出,便于处理来自其他来源的 JSON。
🔍 相关方法
ShowPackage:原始文本输出。BrowsePackage:用info.Homepage跳转浏览器。