Module: RazorRisk::Cassini::Util::VersionUtil

Includes:
Pantheios, Xqsr3::Quality::ParameterChecking
Defined in:
lib/razor_risk/cassini/util/version_util.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(receiver) ⇒ Object



37
38
39
40
# File 'lib/razor_risk/cassini/util/version_util.rb', line 37

def self.included receiver

    receiver.extend self
end

Instance Method Details

#check_version_compatibility(actual_module_or_version, required_version, lib_name = nil, **options) ⇒ Object

Checks the required and actual version of a given library, aborting with a detailed message if not compatible

Signature

  • Parameters:

    - actual_module_or_version

    [ ::Module, ::String, [ ::String, Integer]] The module or version being tested. Recommended usage is to pass the module (which allows inference of the name)

    - required_version

    [ ::String, [ ::Integer ]] The required version, e.g. [ 0, 1, 2, 3] or '0.1.2.3'

    - lib_name

    [::String] The name of the library. May be nil if actual_module_or_version is a ::Module, the name of which will be used instead

  • Options:

    • :aborter:: [ responds to :abort(::String) ] An aborter. May be nil, in which case ::Kernel is used
    • :process_name:: [::String] The name of the process. May be nil, in which case it is inferred from the calling script


62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/razor_risk/cassini/util/version_util.rb', line 62

def check_version_compatibility actual_module_or_version, required_version, lib_name = nil, **options

    check_parameter actual_module_or_version, 'actual_module_or_version', types: [ ::Module, [ ::String, ::Integer ], ::String ]
    check_parameter required_version, 'required_version', types: [ [ ::String, ::Integer ], ::String ]

    check_option options, :aborter, allow_nil: true, responds_to: [ :abort ]

    aborter         =   options[:aborter] || ::Kernel
    process_name    =   options[:process_name] || ::Pantheios::Util::ProcessUtil.derive_process_name

    lib_name        ||= actual_module_or_version.to_s if ::Module === actual_module_or_version

    actual_version  =   ::Module === actual_module_or_version ? actual_module_or_version::VERSION : actual_module_or_version
    required_s      =   ::Array === required_version ? required_version.join('.') : required_version

    aborter.abort "#{process_name}: FATAL: this program requires #{lib_name} version #{required_s} or later" if ::Pantheios::Util::VersionUtil.version_compare(required_version, actual_version) > 0
end