Class: Kettle::Jem::Appraisals::GemVersionResolver
- Inherits:
-
Object
- Object
- Kettle::Jem::Appraisals::GemVersionResolver
- Defined in:
- lib/kettle/jem/appraisals/gem_version_resolver.rb,
sig/kettle/jem/appraisals.rbs
Overview
Adapter over Kettle/Jem's shared RubyGems resolver.
Kettle/Jem owns the RubyGems HTTP/cache/minimum-Ruby behavior because Gemfile, gemspec, and appraisal planning need the same package metadata. This class preserves the appraisals-local type name while delegating the implementation to RubyGemsResolver.
Constant Summary collapse
- RUBYGEMS_API_BASE =
- RUBYGEMS_V2_API_BASE =
Instance Attribute Summary collapse
-
#cache ⇒ Hash
readonly
In-memory cache of API responses.
-
#resolver ⇒ Kettle::Jem::RubyGemsResolver
readonly
Shared Kettle/Jem resolver.
Instance Method Summary collapse
- #fetch_gem_info ⇒ Hash[String, untyped]?
- #fetch_versions ⇒ Array[Hash[String, untyped]]
-
#initialize(resolver: nil, **resolver_options) ⇒ GemVersionResolver
constructor
A new instance of GemVersionResolver.
-
#min_ruby_version(gem_name, version) ⇒ Gem::Version?
Returns the minimum Ruby version required by a specific gem version.
-
#minor_versions_by_major(gem_name, requirements: nil) ⇒ Array<Hash>
Returns all minor versions (+X.Y+) for a gem, grouped by major version.
- #parse_min_ruby ⇒ Gem::Version?
-
#version_info(gem_name, version) ⇒ Hash?
Returns version info (dependencies, ruby_version) for a specific gem version.
-
#versions(gem_name, include_prerelease: false, requirements: nil) ⇒ Array<Hash>
Returns all versions of a gem, sorted oldest-to-newest.
Constructor Details
#initialize(resolver: nil, **resolver_options) ⇒ GemVersionResolver
Returns a new instance of GemVersionResolver.
29 30 31 |
# File 'lib/kettle/jem/appraisals/gem_version_resolver.rb', line 29 def initialize(resolver: nil, **) @resolver = resolver || Kettle::Jem::RubyGemsResolver.new(**) end |
Instance Attribute Details
#cache ⇒ Hash (readonly)
Returns in-memory cache of API responses.
22 23 24 |
# File 'lib/kettle/jem/appraisals/gem_version_resolver.rb', line 22 def cache resolver.cache end |
#resolver ⇒ Kettle::Jem::RubyGemsResolver (readonly)
Returns shared Kettle/Jem resolver.
19 20 21 |
# File 'lib/kettle/jem/appraisals/gem_version_resolver.rb', line 19 def resolver @resolver end |
Instance Method Details
#fetch_gem_info ⇒ Hash[String, untyped]?
77 |
# File 'sig/kettle/jem/appraisals.rbs', line 77
def fetch_gem_info: (String gem_name, String version) -> Hash[String, untyped]?
|
#fetch_versions ⇒ Array[Hash[String, untyped]]
76 |
# File 'sig/kettle/jem/appraisals.rbs', line 76
def fetch_versions: (String gem_name) -> Array[Hash[String, untyped]]
|
#min_ruby_version(gem_name, version) ⇒ Gem::Version?
Returns the minimum Ruby version required by a specific gem version.
Delegates to RubyGemsResolver#min_ruby_version.
64 65 66 |
# File 'lib/kettle/jem/appraisals/gem_version_resolver.rb', line 64 def min_ruby_version(gem_name, version) resolver.min_ruby_version(gem_name, version) end |
#minor_versions_by_major(gem_name, requirements: nil) ⇒ Array<Hash>
Returns all minor versions (+X.Y+) for a gem, grouped by major version.
75 76 77 |
# File 'lib/kettle/jem/appraisals/gem_version_resolver.rb', line 75 def minor_versions_by_major(gem_name, requirements: nil) resolver.minor_versions_by_major(gem_name, requirements: requirements) end |
#parse_min_ruby ⇒ Gem::Version?
78 |
# File 'sig/kettle/jem/appraisals.rbs', line 78
def parse_min_ruby: (String? requirement_str) -> Gem::Version?
|
#version_info(gem_name, version) ⇒ Hash?
Returns version info (dependencies, ruby_version) for a specific gem version.
Uses the v2 API which includes the full dependency structure.
53 54 55 |
# File 'lib/kettle/jem/appraisals/gem_version_resolver.rb', line 53 def version_info(gem_name, version) resolver.version_info(gem_name, version) end |
#versions(gem_name, include_prerelease: false, requirements: nil) ⇒ Array<Hash>
Returns all versions of a gem, sorted oldest-to-newest.
Each entry is a Hash with the keys :number, :ruby_version,
:created_at, and :prerelease.
41 42 43 |
# File 'lib/kettle/jem/appraisals/gem_version_resolver.rb', line 41 def versions(gem_name, include_prerelease: false, requirements: nil) resolver.versions(gem_name, include_prerelease: include_prerelease, requirements: requirements) end |