go get -u github.com/scagogogo/versions
versions
包是一个Go语言库,旨在处理软件版本号。它提供了从文件读取版本号、解析、比较、排序以及查询特定版本范围内的功能。
- 属性:
Raw
string: 原始版本号字符串。PublicTime
time.Time: 版本发布的时间。VersionNumbers
VersionNumbers: 版本号中的数字部分。Prefix
VersionPrefix: 版本号数字部分之前的前缀。Suffix
VersionSuffix: 版本号数字部分之后的后缀。
- 属性:
- 一个整数切片,表示版本号中的数字部分。
- 属性:
- 一个字符串,表示版本号数字部分之前的前缀。
- 属性:
- 一个字符串,表示版本号数字部分之后的后缀。
- 说明: 用于控制版本查询时的参数。
ContainsPolicyNone
: 未指定。ContainsPolicyYes
: 包含。ContainsPolicyNo
: 不包含。
- 描述: 从文件中读取版本号,一行一个版本号,返回解析后的版本切片。
- 参数:
filepath string
: 文件路径。
- 返回值:
[]*Version
: 解析后的版本号切片。error
: 错误信息。
示例代码:
versions, err := versions.ReadVersionsFromFile("path/to/versions.txt")
if err != nil {
log.Fatal(err)
}
fmt.Println(versions)
- 描述: 从文件中读取版本号,一行一个版本号,返回原始字符串切片。
- 参数:
filepath string
: 文件路径。
- 返回值:
[]string
: 原始版本号字符串切片。error
: 错误信息。
示例代码:
versionStrings, err := versions.ReadVersionsStringFromFile("path/to/versions.txt")
if err != nil {
log.Fatal(err)
}
fmt.Println(versionStrings)
- 描述: 对版本号进行分组。
- 参数:
versions []*Version
: 版本号切片。
- 返回值:
map[string]*VersionGroup
: 版本号分组映射。
示例代码:
groupedVersions := versions.Group(versions)
for _, group := range groupedVersions {
fmt.Println(group.Versions())
}
- 描述: 对字符串形式的版本数组排序,返回值也是字符串形式的。
- 参数:
versionStringSlice []string
: 版本号字符串切片。
- 返回值:
[]string
: 排序后的版本号字符串切片。
示例代码:
sortedVersions := versions.SortVersionStringSlice(versionStrings)
fmt.Println(sortedVersions)
- 描述: 对版本号切片进行排序。
- 参数:
versions []*Version
: 版本号切片。
- 返回值:
[]*Version
: 排序后的版本号切片。
示例代码:
sortedVersions := versions.SortVersionSlice(versions)
fmt.Println(sortedVersions)
- 描述: 为版本号创建有序的分组。
- 参数:
versions []*Version
: 版本号切片。
- 返回值:
*SortedVersionGroups
: 有序的版本号分组。
示例代码:
sortedGroups := versions.NewSortedVersionGroups(versions)
fmt.Println(sortedGroups.groupSlice)
- 描述: 查询指定范围内的版本号。
- 参数:
start *tuple.Tuple2[*Version, ContainsPolicy]
: 开始版本号和包含策略。end *tuple.Tuple2[*Version, ContainsPolicy]
: 结束版本号和包含策略。
- 返回值:
[]*Version
: 查询范围内的版本号切片。
示例代码:
startVersion := versions.NewVersion("1.0.0")
endVersion := versions.NewVersion("2.0.0")
queryRange := sortedGroups.QueryRange(&tuple.Tuple2[startVersion, versions.ContainsPolicyYes], &tuple.Tuple2[endVersion, versions.ContainsPolicyNo])
fmt.Println(queryRange)
- 确保传入的文件路径正确,且文件格式符合要求。
- 版本号的解析和比较依赖于正确的格式,非标准格式可能会导致解析错误。
- 时间比较依赖于
PublicTime
被正确设置。
每个函数都可能返回一个错误值,调用时应该检查并妥善处理这些错误。
该库设计为兼容Go语言的标准版本号格式,对于非标准格式的版本号可能需要额外的处理。
这个API文档提供了versions
包的基本使用方法和函数描述,包括详细的代码示例,帮助开发者理解和使用这个版本号处理库。