Sometimes it necessary to compare a current version number against a minimum requirement. This simple wrap around the package command shows how to do it.
VERSION NUMBERS
Version numbers consist of one or more decimal numbers separated by dots, such as 2 or 1.162 or 3.1.13.1. The first number is called the major version number. Larger numbers correspond to later versions of a package, with leftmost numbers having greater significance. For example, version 2.1 is later than 1.3 and version 3.4.6 is later than 3.3.5. Missing fields are equivalent to zeroes: version 1.3 is the same as version 1.3.0 and 1.3.0.0, so it is earlier than 1.3.1 or 1.3.0.2. A later version number is assumed to be upwards compatible with an earlier version number as long as both versions have the same major version number. For example, Tcl scripts written for version 2.3 of a package should work unchanged under versions 2.3.2, 2.4, and 2.5.1. Changes in the major version number signify incompatible changes: if code is written to use version 2.1 of a package, it is not guaranteed to work unmodified with either version 1.7.3 or version 3.1.
# https://wiki.tcl-lang.org/page/package+vsatisfies
proc version {ver min} {
package vcompare $ver $min
#package vsatisfies $ver $min
}
puts [version 3.22.1 3.23.3] ;# -1 (earlier)
puts [version 3.24.1 3.23.3] ;# 1 (later)
puts [version 3.23.3 3.23.3] ;# 0 (equal)
puts [version 4.33.5 3.23.3] ;# 1 (later)
puts [version 4.23.5 4.34.3] ;# -1 (earlier)
No comments:
Post a Comment