A library for working with versions in semver format.
import semver
fn main() {
ver1 := semver.from('1.2.4') or {
println('Invalid version')
return
}
ver2 := semver.from('2.3.4') or {
println('Invalid version')
return
}
println(ver1.gt(ver2))
println(ver2.gt(ver1))
println(ver1.satisfies('>=1.1.0 <2.0.0'))
println(ver2.satisfies('>=1.1.0 <2.0.0'))
println(ver2.satisfies('>=1.1.0 <2.0.0 || >2.2.0'))
}
false
true
true
false
true
For more details see semver.v
file.
fn build(major int, minor int, patch int) Version
build returns a Version
structure with given major
, minor
and patch
versions.
fn coerce(input string) ?Version
input
version to a Version
struct. coerce will strip any contents after the parsed version string:fn from(input string) ?Version
Version
structure parsed from input
string
.fn is_valid(input string) bool
is_valid returns true
if the input
string
can be converted to a (semantic) Version
struct.
enum Increment {
major
minor
patch
}
Increment represents the different types of version increments.
struct Version {
pub:
major int
minor int
patch int
prerelease string
metadata string
}
Version
represents a semantic version in semver format.fn (ver Version) increment(typ Increment) Version
Version
structure with incremented values.fn (ver Version) satisfies(input string) bool
true
if the input
expression can be validated to true
when run against this Version
.assert semver.build(1,0,0).satisfies('<=2.0.0') == true
assert semver.build(1,0,0).satisfies('>=2.0.0') == false
fn (v1 Version) eq(v2 Version) bool
eq returns true
if v1
is equal to v2
.
fn (v1 Version) gt(v2 Version) bool
gt returns true
if v1
is greater than v2
.
fn (v1 Version) lt(v2 Version) bool
lt returns true
if v1
is less than v2
.
fn (v1 Version) ge(v2 Version) bool
ge returns true
if v1
is greater than or equal to v2
.
fn (v1 Version) le(v2 Version) bool
le returns true
if v1
is less than or equal to v2
.