Skip to content

scagogogo/versions

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3311447 · Nov 9, 2024

History

9 Commits
Jun 16, 2023
May 17, 2023
May 16, 2023
Nov 9, 2024
May 25, 2023
Jun 5, 2023
May 17, 2023
May 17, 2023
May 17, 2023
May 17, 2023
Jun 5, 2023
Jun 5, 2023
Jun 5, 2023
Jun 16, 2023
May 25, 2023
Jun 16, 2023
Jun 16, 2023
May 30, 2023
May 25, 2023
May 17, 2023
May 17, 2023
May 17, 2023

Repository files navigation

添加依赖

go get -u github.com/scagogogo/versions

versions API文档

1. 概述

versions 包是一个Go语言库,旨在处理软件版本号。它提供了从文件读取版本号、解析、比较、排序以及查询特定版本范围内的功能。

2. 数据类型和常量

Version

  • 属性:
    • Raw string: 原始版本号字符串。
    • PublicTime time.Time: 版本发布的时间。
    • VersionNumbers VersionNumbers: 版本号中的数字部分。
    • Prefix VersionPrefix: 版本号数字部分之前的前缀。
    • Suffix VersionSuffix: 版本号数字部分之后的后缀。

VersionNumbers

  • 属性:
    • 一个整数切片,表示版本号中的数字部分。

VersionPrefix

  • 属性:
    • 一个字符串,表示版本号数字部分之前的前缀。

VersionSuffix

  • 属性:
    • 一个字符串,表示版本号数字部分之后的后缀。

ContainsPolicy

  • 说明: 用于控制版本查询时的参数。
    • ContainsPolicyNone: 未指定。
    • ContainsPolicyYes: 包含。
    • ContainsPolicyNo: 不包含。

3. 函数

ReadVersionsFromFile

  • 描述: 从文件中读取版本号,一行一个版本号,返回解析后的版本切片。
  • 参数:
    • filepath string: 文件路径。
  • 返回值:
    • []*Version: 解析后的版本号切片。
    • error: 错误信息。

示例代码:

versions, err := versions.ReadVersionsFromFile("path/to/versions.txt")
if err != nil {
    log.Fatal(err)
}
fmt.Println(versions)

ReadVersionsStringFromFile

  • 描述: 从文件中读取版本号,一行一个版本号,返回原始字符串切片。
  • 参数:
    • filepath string: 文件路径。
  • 返回值:
    • []string: 原始版本号字符串切片。
    • error: 错误信息。

示例代码:

versionStrings, err := versions.ReadVersionsStringFromFile("path/to/versions.txt")
if err != nil {
    log.Fatal(err)
}
fmt.Println(versionStrings)

Group

  • 描述: 对版本号进行分组。
  • 参数:
    • versions []*Version: 版本号切片。
  • 返回值:
    • map[string]*VersionGroup: 版本号分组映射。

示例代码:

groupedVersions := versions.Group(versions)
for _, group := range groupedVersions {
    fmt.Println(group.Versions())
}

SortVersionStringSlice

  • 描述: 对字符串形式的版本数组排序,返回值也是字符串形式的。
  • 参数:
    • versionStringSlice []string: 版本号字符串切片。
  • 返回值:
    • []string: 排序后的版本号字符串切片。

示例代码:

sortedVersions := versions.SortVersionStringSlice(versionStrings)
fmt.Println(sortedVersions)

SortVersionSlice

  • 描述: 对版本号切片进行排序。
  • 参数:
    • versions []*Version: 版本号切片。
  • 返回值:
    • []*Version: 排序后的版本号切片。

示例代码:

sortedVersions := versions.SortVersionSlice(versions)
fmt.Println(sortedVersions)

NewSortedVersionGroups

  • 描述: 为版本号创建有序的分组。
  • 参数:
    • versions []*Version: 版本号切片。
  • 返回值:
    • *SortedVersionGroups: 有序的版本号分组。

示例代码:

sortedGroups := versions.NewSortedVersionGroups(versions)
fmt.Println(sortedGroups.groupSlice)

QueryRange

  • 描述: 查询指定范围内的版本号。
  • 参数:
    • 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)

4. 注意事项

  • 确保传入的文件路径正确,且文件格式符合要求。
  • 版本号的解析和比较依赖于正确的格式,非标准格式可能会导致解析错误。
  • 时间比较依赖于 PublicTime 被正确设置。

5. 错误处理

每个函数都可能返回一个错误值,调用时应该检查并妥善处理这些错误。

6. 版本兼容性

该库设计为兼容Go语言的标准版本号格式,对于非标准格式的版本号可能需要额外的处理。

这个API文档提供了versions包的基本使用方法和函数描述,包括详细的代码示例,帮助开发者理解和使用这个版本号处理库。

About

版本解析、排序、范围查询

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages