Module: Hatchet::EngineVersion

Defined in:
lib/hatchet/engine_version.rb

Overview

Semver parsing + comparison helpers used to gate features by engine version.

Class Method Summary collapse

Class Method Details

.parse_semver(version) ⇒ Array(Integer, Integer, Integer)

Parse a semver string like ““v0.78.23”“ into “[major, minor, patch]“.

Returns “[0, 0, 0]“ if parsing fails, matching the Python helper.

Parameters:

  • version (String, nil)

    The version string (with or without a “v“ prefix, optional “-pre“ suffix)

Returns:

  • (Array(Integer, Integer, Integer))


24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/hatchet/engine_version.rb', line 24

def parse_semver(version)
  return [0, 0, 0] if version.nil?

  v = version.to_s
  v = v.sub(/\Av/, "")
  v = v.split("-", 2).first || ""

  parts = v.split(".")
  return [0, 0, 0] if parts.length != 3

  [Integer(parts[0]), Integer(parts[1]), Integer(parts[2])]
rescue ArgumentError, TypeError
  [0, 0, 0]
end

.semver_less_than?(left_version, right_version) ⇒ Boolean Also known as: semver_less_than

Returns true if semver “left_version“ is strictly less than “right_version“.

Parameters:

  • left_version (String, nil)
  • right_version (String, nil)

Returns:

  • (Boolean)

    true if semver “left_version“ is strictly less than “right_version“



42
43
44
# File 'lib/hatchet/engine_version.rb', line 42

def semver_less_than?(left_version, right_version)
  (parse_semver(left_version) <=> parse_semver(right_version)).negative?
end