class SidekiqUniqueJobs::VersionCheck
@author Mikael Henriksson <mikael@mhenrixon.com>
Handles checking if a version is compliant with given constraint
def self.satisfied?(version, constraint)
-
(true, false)
-
Parameters:
-
constraint
(String
) -- a version constraint `>= 5.0.0 <= 5.1.1` -
version
(String
) -- a version string `5.0.0`
Other tags:
- Example: An unsatisfied constraint -
Example: A satisfied constraint -
def self.satisfied?(version, constraint) new(version, constraint).satisfied? end
def self.unfulfilled?(version, constraint)
-
(true, false)
-
Parameters:
-
constraint
(String
) -- a version constraint `>= 5.0.0 <= 5.1.1` -
version
(String
) -- a version string `5.0.0`
Other tags:
- Example: An unfulfilled constraint -
Example: A satisfied constraint -
def self.unfulfilled?(version, constraint) !satisfied?(version, constraint) end
def compare(expected, operator)
def compare(expected, operator) Gem::Version.new(version).send(operator, Gem::Version.new(expected)) end
def constraints
def constraints result = { version_one => operator_one } result[version_two] = operator_two if version_two result end
def initialize(version, constraint)
-
constraint
(String
) -- a version constraint `>= 5.0.0 <= 5.1.1` -
version
(String
) -- a version string `5.0.0`
def initialize(version, constraint) @version = Gem::Version.new(version) @match = PATTERN.match(constraint.to_s) raise ArgumentError, "A version (eg. 5.0) is required to compare against" unless @version raise ArgumentError, "At least one operator and version is required (eg. >= 5.1)" unless constraint end
def operator_one
def operator_one match[:operator1] end
def operator_two
def operator_two match[:operator2] end
def satisfied?
-
(true, false)
-
def satisfied? constraints.all? do |expected, operator| compare(expected, operator) end end
def version_one
def version_one match[:version1] end
def version_two
def version_two match[:version2] end