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.
::: tip API
semver.new(version: <string>)
:::
| Parameter | Description |
|---|---|
| version | Required. Version string |
Creates a new semver instance from a version string. Raises an error if parsing fails.
local version = semver.new("v2.1.0")
::: tip API
semver.try_parse(version: <string>)
:::
| Parameter | Description |
|---|---|
| version | Required. Version string |
Same as new, but returns nil value if parsing failed.
local version = semver.try_parse("v2.1.0")
::: tip API
semver.match(str: <string>, pos: <number>, pattern: <string>)
:::
| Parameter | Description |
|---|---|
| str | Required. String to match from |
| pos | Required. Start position |
| pattern | Optional. Pattern to match |
Matches a valid version from the string.
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
::: tip API
semver.is_valid(version: <string>)
:::
| Parameter | Description |
|---|---|
| version | Required. Version string to validate |
Tests if the version can be parsed.
print(semver.is_valid("536f2bd6a092eba91315b7d1e120dff63392a11d"))
print(semver.is_valid("v2.1.0-pre"))
false
true
::: tip API
semver.is_valid_range(range: <string>)
:::
| Parameter | Description |
|---|---|
| range | Required. Range string to validate |
Tests if the given range is a valid one.
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
::: tip API
semver.compare(v1: <string>, v2: <string>)
:::
| Parameter | Description |
|---|---|
| v1 | Required. First version string |
| v2 | Required. Second version string |
Compares two versions and returns a number between -1 and 1.
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
::: tip API
semver.satisfies(version: <string>, range: <string>)
:::
| Parameter | Description |
|---|---|
| version | Required. Version string |
| range | Required. Range string |
Checks if a version satisfies a range version.
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
::: tip API
semver.select(range: <string>, versions: <table>, tags: <table>, branches: <table>)
:::
| Parameter | Description |
|---|---|
| range | Required. Range string |
| versions | Required. Array of versions |
| tags | Required. Array of tags |
| branches | Required. Array of branches |
Selects required version from versions, tags and branches.
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
::: tip API
semver:get(key: <string>)
:::
| Parameter | Description |
|---|---|
| key | Required. Information key |
Gets a value from the informations table.
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
::: tip API
semver:major()
:::
No parameters required for this function.
Returns the major version number.
semver.new("v2.1.0"):major() -- return 2
::: tip API
semver:minor()
:::
No parameters required for this function.
Returns the minor version number.
semver.new("v2.1.0"):minor() -- return 1
::: tip API
semver:patch()
:::
No parameters required for this function.
Returns the patch version number.
semver.new("v2.1.0"):patch() -- return 0
::: tip API
semver:build()
:::
No parameters required for this function.
Returns the build version.
semver.new("v2.1.0+build"):build() -- return {"build"}
::: tip API
semver:prerelease()
:::
No parameters required for this function.
Returns the prerelease version.
semver.new("v2.1.0-prerelease"):prerelease() -- return {"prerelease"}
::: tip API
semver:rawstr()
:::
No parameters required for this function.
Returns the raw version string.
semver.new("v2.1.0+build"):rawstr() -- return v2.1.0+build
::: tip API
semver:shortstr()
:::
No parameters required for this function.
Returns the short version string.
semver.new("v2.1.0+build"):shortstr() -- return 2.1.0