version

package module
v1.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2024 License: MIT Imports: 7 Imported by: 10

README

version Test codecov License Go version PkgGoDev

通过定义 struct tag 的相关属性,可以解析大部份版本号字符串到一个结构体中。

type Version struct {
    Major int    `version:"0,number,.1"`
    Minor int    `version:"1,number,+2"`
    Build string `version:"2,string"`
}

ver := &Version{}
version.Parse(ver, "2.1+160616")
// 解析之后
// ver.Major == 2, ver.Minor == 1, ver.Build == 160616

同时也定义了一个 semver 的一个内部实现。

semver,err := version.SemVer("2.10.1+build")
if err != nil{
    // TODO
}

fmt.Println(semver)
// semver.Major == 2
// semver.Minor == 10
// semver.Patch == 1
// semver.Build == build

安装

go get github.com/issue9/version

版权

本项目采用 MIT 开源授权许可证,完整的授权说明可在 LICENSE 文件中找到。

Documentation

Overview

Package version 是一个通用的版本号解析工具,可以一个版本号字符串解析到一个结构体中。

version 通过 struct tag 的相关定义来解析版本号字符串。包含了以下标签。 - index 该字段对应的的编号,也是默认的解析顺序(0 是入口),只能为整数,唯一; - route 表示当前字段的结束字符,以及对应的需要跳转到的索引值值。 比如以下定义的结构体:

type struct Version {
    Major int    `version:"0,.1,+2"`
    Minor int    `version:"1,.2"`
    Build string `version:"2"`
}

在解析时,首先会拿到索引为 0 的字段,也就是 Major,然后对字符串进行 依次比较,如果碰到符号 `.` ,则将前面的字符串转换成数值保存 Major, 然后跳到索引号为 1 的 Minor,再次对后续的字符串进行依次比较;若碰到 的是字符 `+` 则跳到索引值为 2 的 Build 字段,依次对后续的字符进行比 较;若碰到结尾了,而直接结束。 具体的定义,可参考下自带的 SemVersion

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Parse

func Parse(obj interface{}, ver string) error

Parse 解析版本号字符串到 obj 中

func SemVerCompare

func SemVerCompare(ver1, ver2 string) (int, error)

SemVerCompare 比较两个 semver 版本号字符串

func SemVerCompatible

func SemVerCompatible(ver1, ver2 string) (bool, error)

SemVerCompatible 两个 semver 版本号是否兼容

func SemVerValid

func SemVerValid(ver string) bool

SemVerValid 验证 semver 版本号是否符合 semver 规范

Types

type SemVersion

type SemVersion struct {
	Major      int    `version:"0,.1"`
	Minor      int    `version:"1,.2"`
	Patch      int    `version:"2,+4,-3"`
	PreRelease string `version:"3,+4"`
	Build      string `version:"4"`
}

SemVersion 是 semver 的定义

func SemVer

func SemVer(ver string) (*SemVersion, error)

SemVer 将一个版本号字符串解析成 SemVersion 对象

func (*SemVersion) Compare

func (v *SemVersion) Compare(v2 *SemVersion) int

Compare 比较两个版本号

若相同返回 0,若 v 比较大返回正整数,否则返回负数。

func (*SemVersion) CompareString

func (v *SemVersion) CompareString(ver string) (int, error)

CompareString 将当前对象与一个版本号字符串相比较。其返回值的功能与 Compare 相同

func (*SemVersion) Compatible

func (v *SemVersion) Compatible(v2 *SemVersion) bool

Compatible 当前对象与 v2 是否兼容

semver 规定主版本号相同的,在 API 层面必须兼容。

func (*SemVersion) CompatibleString

func (v *SemVersion) CompatibleString(ver string) (bool, error)

CompatibleString 当前对象与版本号字符串是否兼容

semver 规定主版本号相同的,在 API 层面必须兼容。

func (*SemVersion) String

func (v *SemVersion) String() string

String 转换成版本号字符串

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL