🏷️ ParseVersionOutput
解析 composer --version 的输出,提取版本号、主次补丁号及发布日期,返回 *VersionInfo。
何时使用
当你已拿到 composer --version 的文本输出,需要把 Composer version 2.6.6 2024-02-22 15:37:50 这样的字符串解析成结构化数据时使用。它是 GetVersionInfo 内部调用的解析器。
签名
go
func ParseVersionOutput(output string) (*VersionInfo, error)参数
| 参数 | 类型 | 说明 |
|---|---|---|
output | string | composer --version 的原始输出 |
返回值
*VersionInfo:版本信息,含Version(如2.6.6)、Major/Minor/Patch(整数)、ReleaseDate(time.Time,可选)、FullOutput(原始字符串)。error:输出过短或未找到version关键字时返回解析错误。
示例
go
package main
import (
"fmt"
"log"
"github.com/scagogogo/composer-skills/pkg/composer"
)
func main() {
output := "Composer version 2.6.6 2024-02-22 15:37:50"
info, err := composer.ParseVersionOutput(output)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Composer %d.%d.%d (发布于 %s)\n", info.Major, info.Minor, info.Patch, info.ReleaseDate.Format("2006-01-02"))
}进阶
- 🔍 解析逻辑:先用
strings.Fields分词,定位version关键字后的版本字符串;用fmt.Sscanf解析major.minor.patch;再用time.Parse解析2006-01-02 15:04:05格式的日期。 - 🚀 一步到位执行命令并解析用
GetVersionInfo()(内部Run("--version")后调用本解析器)。 - 🔗 只需提取版本号字符串、不需要结构化时,可用更轻量的
ExtractVersionFromOutput。