Module: Ucode::VersionResolver

Defined in:
lib/ucode/version_resolver.rb

Overview

Resolves a user-supplied version intent to a concrete version string.

Three input modes:

resolve(nil)           # default_version from config
resolve(:default)      # default_version from config
resolve(:latest)       # probes listing_url, picks highest; falls
                       # back to default on failure
resolve("17.0.0")      # explicit; validated against known_versions

Class Method Summary collapse

Class Method Details

.resolve(intent) ⇒ String

Parameters:

  • intent (nil, :default, :latest, String)

Returns:

  • (String)


22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ucode/version_resolver.rb', line 22

def resolve(intent)
  case intent
  when nil, :default
    Ucode.configuration.default_version
  when :latest
    probe_latest
  else
    validate!(intent)
    intent
  end
end

.validate!(version) ⇒ void

This method returns an undefined value.

Raise UnknownVersionError unless ‘version` is in known_versions.

Parameters:

  • version (String)

Raises:



37
38
39
40
41
42
43
44
45
# File 'lib/ucode/version_resolver.rb', line 37

def validate!(version)
  return if Ucode.configuration.known?(version)

  raise Ucode::UnknownVersionError.new(
    "UCD version #{version.inspect} is not recognized.",
    context: { version: version,
               known: Ucode.configuration.known_versions },
  )
end