1 unstable release
0.1.0 | May 21, 2022 |
---|
#2947 in Parser implementations
9KB
153 lines
SemVerq
Semverq is a cli utility for:
- Validating semver format
- Accessing semver structures
- Convert semver to json
Features
Validation
For -i
option, semverq validates the input string as a semver.
$ semverq -i '1.2.3-beta+dev-armhf'
(nothing is output)
$ echo $?
0
$ semverq -i '1.2.3-beta+dev+armhf'
invalid format as semver: 1.2.3-beta+dev+armhf
$ echo $?
150
If the -i
option is not specified, semverq reads string from standard input.
$ semverq <<<'1.2.3-input+stdin'
$ echo $?
0
Convert to json
For -j
option, semverq converts the input to json.
$ semverq -j -i '1.2.3-beta+36a1d2f'
{
"major": 1,
"minor": 2,
"patch": 3,
"pre-release": "beta",
"build": "36a1d2f"
}
If pre-release
or build
is not exists, the values of their fields will be null
.
$ semverq -j -i '1.2.3'
{
"major": 1,
"minor": 2,
"patch": 3,
"pre-release": null,
"build": null
}
Accessing to parts
For -q
option, access semver parts.
Get only major version:
$ semverq -q '.major' -i '1.2.3-beta+36a1d2f'
1
Build a json object with pre-release
and build
:
$ semverq -q '{ "pre-release": ".pre-release", "build": ".build" }' -i '1.2.3-beta+36a1d2f'
{ "pre-release": "beta", "build": "36a1d2f" }
Accessor
Supported accessors are below:
.major
Major version..minor
Minor version..patch
Patch version..pre-release
or.pre
pre-release version..build
Build metadata..version-core
Shorthand for.major..minor..patch
.
Checking for a match
For -m
option, semverq checking for a match to given requirement.
The requirement is constructed from comma separated version constraint.
This matching syntax and rules are same as in Rust's package system.
Matching case:
$ semverq -m '>1.2.1, <=2.0.0' -i '1.2.3'
$ echo $?
0
Not matching case:
$ semverq -m '^1.2.1, 1.3.*' -i '1.2.3-beta+dev-armhf'
Version (1.2.3-beta+dev-armhf) does not match that requirement (^1.2.1, 1.3.*).
$ echo $?
152
Invalid requirement:
$ semverq -m '>1.2.1, <=2.0.0.' -i '1.2.3'
invalid format as version requirement: >1.2.1, <=2.0.0.
$ echo $?
151
Dependencies
~4.5–6.5MB
~115K SLoC