class SidekiqUniqueJobs::VersionCheck


@author Mikael Henriksson <mikael@mhenrixon.com>
Handles checking if a version is compliant with given constraint

def self.satisfied?(version, constraint)

Returns:
  • (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)

Returns:
  • (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)

Parameters:
  • 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?

Returns:
  • (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