version

package module
v0.0.3 Latest Latest
Warning

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

Go to latest
Published: Jun 22, 2024 License: MIT Imports: 7 Imported by: 0

README

Version Library

A Go library for parsing, comparing, and managing software versions. This library supports semantic versioning and allows for detailed version part comparisons.

Features

  • Parse versions from strings.
  • Compare versions (greater than, less than, equal to).
  • Handle semantic versioning (major, minor, patch).
  • Support for pre-release versions (alpha, beta, RC).
  • Find the latest version from a list.

Installation

To install the library, use go get:

go get github.com/GiGurra/version

Usage

Parsing Versions
import "github.com/GiGurra/version"

v := version.ParseVersion("1.2.3")
fmt.Println(v) // Output: 1.2.3
Creating Versions
v := version.NewVersion(1, 2, 3)
fmt.Println(v) // Output: 1.2.3
Comparing Versions
v1 := version.ParseVersion("1.2.3")
v2 := version.ParseVersion("1.2.4")

if v1.IsLessThan(v2) {
    fmt.Println("v1 is less than v2")
}
Finding the Latest Version
versions := []string{"1.2.3", "1.2.4", "1.3.0"}
parsedVersions := lo.Map(versions, version.ParseVersion)

latest := version.FindLatestVersionBy(parsedVersions, func(v version.Version) version.Version {
    return v
})

fmt.Println(latest) // Output: 1.3.0

Testing

Run the tests using:

go test ./...

License

This project is licensed under the MIT License.

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

Contact

For any questions or issues, please open an issue on GitHub.


Happy versioning! 🚀

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FindLatestVersionBy added in v0.0.2

func FindLatestVersionBy[T any](items []T, fGetVersion func(T) Version) *T

func SortByVersion added in v0.0.3

func SortByVersion[T any](items []T, fGetVersion func(T) Version) []T

Types

type Version

type Version struct {
	Major VersionPart
	Minor VersionPart
	Patch VersionPart
	Parts []VersionPart
}

func NewVersion

func NewVersion(major int, minor int, patch int) Version

func ParseVersion

func ParseVersion(versionStr string) Version

func (Version) IsFullyIdenticalTo

func (a Version) IsFullyIdenticalTo(b Version) bool

func (Version) IsGreaterThan

func (v Version) IsGreaterThan(other Version) bool

func (Version) IsGreaterThanOrEqualTo

func (v Version) IsGreaterThanOrEqualTo(other Version) bool

func (Version) IsLessThan

func (v Version) IsLessThan(version Version) bool

func (Version) IsNonEmpty

func (v Version) IsNonEmpty() bool

func (Version) IsSemanticallyIdenticalTo

func (a Version) IsSemanticallyIdenticalTo(b Version) bool

func (Version) IsSemverRelease

func (v Version) IsSemverRelease() bool

func (Version) IsValid

func (v Version) IsValid() bool

IsValid returns true if the version is non-empty and the major part is an int and >= 0

func (Version) Raw

func (v Version) Raw() string

func (Version) String

func (v Version) String() string

type VersionPart

type VersionPart struct {
	Raw      string
	IntRepr  int
	IsInt    bool
	SubParts []VersionPart
}

func ParseVersionPart

func ParseVersionPart(part string) VersionPart

func (VersionPart) IsFullyIdenticalTo

func (a VersionPart) IsFullyIdenticalTo(b VersionPart) bool

func (VersionPart) IsGreaterOrEqThan

func (p VersionPart) IsGreaterOrEqThan(other VersionPart) bool

func (VersionPart) IsGreaterThan

func (p VersionPart) IsGreaterThan(other VersionPart) bool

func (VersionPart) IsLessThan

func (p VersionPart) IsLessThan(other VersionPart) bool

func (VersionPart) IsSemanticallyEqualTo

func (p VersionPart) IsSemanticallyEqualTo(other VersionPart) bool

Jump to

Keyboard shortcuts

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