Skip to content

core.base.semver ​

A module to work with semantic versionning (semver). It allows you to parse version strings and access various components of a version such as major, minor, ...

We can use import("core.base.semver") for direct import and use.

semver.new ​

  • Create a new semver instance from a version string. Raise an error if the parsing failed

Function Prototype ​

API

lua
semver.new(version: <string>)

Parameter Description ​

ParameterDescription
versionRequired. Version string

Usage ​

Creates a new semver instance from a version string. Raises an error if parsing fails.

lua
local version = semver.new("v2.1.0")

semver.try_parse ​

  • Same as new, but return a nil value if the parsing failed

Function Prototype ​

API

lua
semver.try_parse(version: <string>)

Parameter Description ​

ParameterDescription
versionRequired. Version string

Usage ​

Same as new, but returns nil value if parsing failed.

lua
local version = semver.try_parse("v2.1.0")

semver.match ​

  • Match a valid version from the string

Function Prototype ​

API

lua
semver.match(str: <string>, pos: <number>, pattern: <string>)

Parameter Description ​

ParameterDescription
strRequired. String to match from
posRequired. Start position
patternOptional. Pattern to match

Usage ​

Matches a valid version from the string.

lua
print(semver.match("v2.1.0", 1)) -- start from position 1
print(semver.match("v2.1.0", 0, "%d+%.%d+"))
2.1.0
2.1

semver.is_valid ​

  • Get if a given string version is valid, by testing if the version can be parsed

Function Prototype ​

API

lua
semver.is_valid(version: <string>)

Parameter Description ​

ParameterDescription
versionRequired. Version string to validate

Usage ​

Tests if the version can be parsed.

lua
print(semver.is_valid("536f2bd6a092eba91315b7d1e120dff63392a11d"))
print(semver.is_valid("v2.1.0-pre"))
false
true

semver.is_valid_range ​

  • Test if the given range is a valid one

Function Prototype ​

API

lua
semver.is_valid_range(range: <string>)

Parameter Description ​

ParameterDescription
rangeRequired. Range string to validate

Usage ​

Tests if the given range is a valid one.

lua
print(semver.is_valid_range(">2.1.0"))
print(semver.is_valid_range(">v2.1.0"))
print(semver.is_valid_range("2.0.0 - <2.1.0"))
print(semver.is_valid_range("1.0 || 2.1"))
true
false
false
true

semver.compare ​

  • Compare two versions, return a number between 1 and -1

Function Prototype ​

API

lua
semver.compare(v1: <string>, v2: <string>)

Parameter Description ​

ParameterDescription
v1Required. First version string
v2Required. Second version string

Usage ​

Compares two versions and returns a number between -1 and 1.

lua
print(semver.compare("v2.2", "v2.2.0"))
print(semver.compare("v2.2.0", "v2.1.0"))
print(semver.compare("v2.1.1", "v2.1.0"))
print(semver.compare("v2.1.0", "v2.2.0"))
0
1
1
-1

semver.satisfies ​

  • Check if a version satisfies a range version

Function Prototype ​

API

lua
semver.satisfies(version: <string>, range: <string>)

Parameter Description ​

ParameterDescription
versionRequired. Version string
rangeRequired. Range string

Usage ​

Checks if a version satisfies a range version.

lua
print(semver.satisfies("v2.1.0", ">= 2.1"))
print(semver.satisfies("v2.1.0", ">1.0 <2.1"))
print(semver.satisfies("v2.1.0", ">1.0 || <2.1"))
print(semver.satisfies("v2.1.0", ">=2.x || 3.x - 4.x"))
true
false
true
true

semver.select ​

  • Select required version from versions, tags and branches

Function Prototype ​

API

lua
semver.select(range: <string>, versions: <table>, tags: <table>, branches: <table>)

Parameter Description ​

ParameterDescription
rangeRequired. Range string
versionsRequired. Array of versions
tagsRequired. Array of tags
branchesRequired. Array of branches

Usage ​

Selects required version from versions, tags and branches.

lua
local version, source = semver.select(">=1.5.0 <1.6", {"1.5.0", "1.5.1"}, {"v1.5.0"}, {"master", "dev"})
print(semver.select(">=1.5.0 <1.6", {"1.5.0", "1.5.1"}, {"v1.5.0"}, {"master", "dev"}))
print(semver.select("v1.5.0", {"1.5.0", "1.5.1"}, {"v1.5.0"}, {"master", "dev"}))
print(semver.select("master", {"1.5.0", "1.5.1"}, {"v1.5.0"}, {"master", "dev"}))
1.5.1 version
v1.5.0 tag
master branch

semver:get ​

  • Get a value from the informations table

Function Prototype ​

API

lua
semver:get(key: <string>)

Parameter Description ​

ParameterDescription
keyRequired. Information key

Usage ​

Gets a value from the informations table.

lua
local version = semver.new("v2.1.0+build")
print(version["_INFO"])
print(version:get("major"))
{
  prerelease = { },
  build = {
    "build"
  },
  version = "v2.1.0+build",
  raw = "v2.1.0+build",
  patch = 0,
  minor = 1,
  major = 2
}

2

semver:major ​

  • Get the major version

Function Prototype ​

API

lua
semver:major()

Parameter Description ​

No parameters required for this function.

Usage ​

Returns the major version number.

lua
semver.new("v2.1.0"):major() -- return 2

semver:minor ​

  • Get the minor version

Function Prototype ​

API

lua
semver:minor()

Parameter Description ​

No parameters required for this function.

Usage ​

Returns the minor version number.

lua
semver.new("v2.1.0"):minor() -- return 1

semver:patch ​

  • Get the patch version

Function Prototype ​

API

lua
semver:patch()

Parameter Description ​

No parameters required for this function.

Usage ​

Returns the patch version number.

lua
semver.new("v2.1.0"):patch() -- return 0

semver:build ​

  • Get the build version

Function Prototype ​

API

lua
semver:build()

Parameter Description ​

No parameters required for this function.

Usage ​

Returns the build version.

lua
semver.new("v2.1.0+build"):build() -- return {"build"}

semver:prerelease ​

  • Get the prerelease version

Function Prototype ​

API

lua
semver:prerelease()

Parameter Description ​

No parameters required for this function.

Usage ​

Returns the prerelease version.

lua
semver.new("v2.1.0-prerelease"):prerelease() -- return {"prerelease"}

semver:rawstr ​

  • Get the raw string

Function Prototype ​

API

lua
semver:rawstr()

Parameter Description ​

No parameters required for this function.

Usage ​

Returns the raw version string.

lua
semver.new("v2.1.0+build"):rawstr() -- return v2.1.0+build

semver:shortstr ​

  • Get the short version string

Function Prototype ​

API

lua
semver:shortstr()

Parameter Description ​

No parameters required for this function.

Usage ​

Returns the short version string.

lua
semver.new("v2.1.0+build"):shortstr() -- return 2.1.0