Class: Ukiryu::VersionCompatibility

Inherits:
Object
  • Object
show all
Defined in:
lib/ukiryu/models/version_compatibility.rb

Overview

Version compatibility model

Checks if an installed tool version is compatible with the version requirements specified in a tool profile.

Defined Under Namespace

Classes: RequirementParser

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(installed_version:, required_version:, compatible:, reason: nil) ⇒ VersionCompatibility

Initialize version compatibility check

Parameters:

  • installed_version (String)

    the installed tool version

  • required_version (String)

    the version requirement (e.g., “>= 2.30”)

  • compatible (Boolean)

    whether the versions are compatible

  • reason (String, nil) (defaults to: nil)

    the reason for incompatibility



17
18
19
20
21
22
# File 'lib/ukiryu/models/version_compatibility.rb', line 17

def initialize(installed_version:, required_version:, compatible:, reason: nil)
  @installed_version = installed_version
  @required_version = required_version
  @compatible = compatible
  @reason = reason
end

Instance Attribute Details

#compatibleObject (readonly)

Returns the value of attribute compatible.



9
10
11
# File 'lib/ukiryu/models/version_compatibility.rb', line 9

def compatible
  @compatible
end

#installed_versionObject (readonly)

Returns the value of attribute installed_version.



9
10
11
# File 'lib/ukiryu/models/version_compatibility.rb', line 9

def installed_version
  @installed_version
end

#reasonObject (readonly)

Returns the value of attribute reason.



9
10
11
# File 'lib/ukiryu/models/version_compatibility.rb', line 9

def reason
  @reason
end

#required_versionObject (readonly)

Returns the value of attribute required_version.



9
10
11
# File 'lib/ukiryu/models/version_compatibility.rb', line 9

def required_version
  @required_version
end

Class Method Details

.check(installed_version, requirement) ⇒ VersionCompatibility

Check compatibility against a version requirement

Parameters:

  • installed_version (String)

    the installed version

  • requirement (String)

    the version requirement (e.g., “>= 2.30”)

Returns:



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/ukiryu/models/version_compatibility.rb', line 54

def self.check(installed_version, requirement)
  if !requirement || requirement.empty?
    return new(installed_version: installed_version, required_version: requirement, compatible: true,
               reason: nil)
  end

  parser = RequirementParser.new(requirement)
  compatible = parser.satisfied_by?(installed_version)

  if compatible
    new(installed_version: installed_version, required_version: requirement, compatible: true, reason: nil)
  else
    new(installed_version: installed_version, required_version: requirement, compatible: false,
        reason: "Version #{installed_version} does not satisfy requirement: #{requirement}")
  end
end

Instance Method Details

#compatible?Boolean

Check if versions are compatible

Returns:

  • (Boolean)

    true if compatible



27
28
29
# File 'lib/ukiryu/models/version_compatibility.rb', line 27

def compatible?
  @compatible
end

#incompatible?Boolean

Check if versions are incompatible

Returns:

  • (Boolean)

    true if incompatible



34
35
36
# File 'lib/ukiryu/models/version_compatibility.rb', line 34

def incompatible?
  !@compatible
end

#status_messageString

Get a human-readable status message

Returns:

  • (String)

    the status message



41
42
43
44
45
46
47
# File 'lib/ukiryu/models/version_compatibility.rb', line 41

def status_message
  if @compatible
    "Version #{@installed_version} is compatible with requirement #{@required_version}"
  else
    @reason || "Version #{@installed_version} is not compatible with requirement #{@required_version}"
  end
end