📊 GetVersionInfo
获取 Composer 版本的结构化信息,包括版本号、主/次/补丁版本号与发布日期。等价于执行 composer --version 并将输出解析为 *VersionInfo。
何时使用
当需要在代码中按主版本号做分支判断、记录发布日期或生成版本报告时使用。相比 GetVersion 仅返回字符串,本方法提供可直接访问的字段。
签名
go
func (c *Composer) GetVersionInfo() (*VersionInfo, error)参数
该方法无参数。
返回值
| 返回值 | 类型 | 说明 |
|---|---|---|
| 第一返回值 | *VersionInfo | 结构化版本信息 |
| 第二返回值 | error | 执行或解析失败时返回 |
VersionInfo 主要字段:
| 字段 | 类型 | 说明 |
|---|---|---|
Version | string | 完整版本号,例如 2.1.6 |
FullOutput | string | 原始命令输出 |
Major | int | 主版本号 |
Minor | int | 次版本号 |
Patch | int | 补丁版本号 |
ReleaseDate | time.Time | 发布日期(可空) |
示例
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.GetVersionInfo()
if err != nil {
log.Fatalf("获取版本信息失败: %v", err)
}
fmt.Printf("Composer %d.%d.%d\n", info.Major, info.Minor, info.Patch)
if !info.ReleaseDate.IsZero() {
fmt.Printf("发布日期: %s\n", info.ReleaseDate.Format("2006-01-02"))
}
}进阶
- 仅需版本号字符串时使用更轻量的 GetVersion。
- 解析逻辑封装在
ParseVersionOutput(output)中,可对任意composer --version输出复用。 - 升级 Composer 后再次调用可确认新版本,参见 SelfUpdate。