Base.SemVar [0.0.1]
Semantic Version Parser and Satisfier
SemVar
SemVar is a semantic versioning library for Idris2. SemVar allows you to parse, compare and satisfy semantic versions in Idris.
Getting Started
Simply add Base.SemVar=^0.0.1 to Inigo.toml and run inigo prod fetch-deps.
Parsing Versions
You can parse version strings so long as they comply with the official semantic versioning spec:
> parseVersion "4.0.0-alpha1+linux" MkVersion 4 0 0 (Just "alpha1") (Just "linux")
You can also compare versions:
> do x <- parseVersion "4.0.0" y <- parseVersion "4.1.0" pure x < y Just True
Also, you can parse SemVar requirements:
> map show $ parseRequirement "~1.2.3"" Just ">=1.2.3 <1.3.0"
Satisfaction
You can also use SemVar to attempt to satisfy a set of requirements based on a set of available versions.
import SemVar.Sat -- Note: depB depends on depA >= 1.0.0 versions : List VersionNode versions = [ (["depA"], (MkVersion 4 0 0 Nothing Nothing), []) (["depB"], (MkVersion 1 0 0 Nothing Nothing), [ [(["depA"], GTE (MkVersion 1 0 0 Nothing Nothing))] ]) ] > satisfyAll versions [("depB", GTE (MkVersion 1 0 0 Nothing Nothing)] Right [ (["depB"], MkVersion 1 0 0 Nothing Nothing) , (["depA"], MkVersion 4 0 0 Nothing Nothing) ]
This is a simple example, but the solver can try to match a complex tree of requirements.
Contributing
Feel free to contribute to make the SemVar library better by creating a PR or opening an issue.
License
This code is licensed under the MIT license. All contributors must release all code under this same license.
Versions
* 0.0.1
Link
https://github.com/inigo/tree/master/Base/SemVar
License
MIT