Skip to content

🏷️ 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)

参数

参数类型说明
outputstringcomposer --version 的原始输出

返回值

  • *VersionInfo:版本信息,含 Version(如 2.6.6)、Major/Minor/Patch(整数)、ReleaseDatetime.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

基于 MIT 许可证发布