vercmp ====== 51 SLOC, not counting format scripts. vercmp evaluates a version comparison expression and prints "yes" if the expression evaluates to true and "no" otherwise. vercmp can be extended with additional formats by adding a shell script defining a `comparever` function to the `format` subdirectory. no `format` subdirectory is included by default. to make bootstrapping easier, instructions for pulling some are included in the makefile. if bootstrapping lix os, for example, the following will `git clone` lix os' vercmp formats into the format directory: make lix-os-formats or, if wanting a basis for creating one's own formats using the same foundatiion as lix os' formats: make bare-formats to install, just `make install`. usage: vercmp [format] vercmp formats comparison string: " " op: == equal >= greater than or equal <= less than or equal > greater than < less than format: the name of the format to use for parsing and comparing the versions. see 'vercmp formats' for a list of formats. (format scripts are kept in $VERCMPROOT/format) ## examples $ vercmp "1.2.3 >= 3.2.1" no $ vercmp "1.2 == 1.2" yes $ vercmp "1.2+meta1 == 1.2+meta2" yes $ vercmp "1.2+meta1 > 1.2-rc1+meta2" yes $ vercmp "1.2-rc1 < 1.2-rc2" yes ## caveat vercmp format scripts assume both versions are in the same format. if this is not the case, undefined behavior may ensue. even a simple variation like the following can have unexpected results: $ vercmp "1.2 == 1.2.0" no