Class: GemCP::Tools::GetReleasesBetween

Inherits:
Base
  • Object
show all
Defined in:
lib/gemcp/tools/get_releases_between.rb

Overview

List all releases between two versions of a gem, including changelog links.

Instance Method Summary collapse

Methods inherited from Base

#initialize

Constructor Details

This class inherits a constructor from GemCP::Tools::Base

Instance Method Details

#call(name:, from_version:, to_version:) ⇒ Hash

Returns MCP response.

Parameters:

  • name (String)

    gem name

  • from_version (String)

    starting version (exclusive lower bound)

  • to_version (String)

    ending version (inclusive upper bound)

Returns:

  • (Hash)

    MCP response



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/gemcp/tools/get_releases_between.rb', line 22

def call(name:, from_version:, to_version:)
  result = with_errors do
    all_versions = client.versions(name)

    from = Gem::Version.new(from_version)
    to = Gem::Version.new(to_version)

    between = all_versions.select do |v|
      version = Gem::Version.new(v["number"])
      version > from && version <= to
    end

    between.sort_by! { |v| Gem::Version.new(v["number"]) }

    {
      name: name,
      from_version: from_version,
      to_version: to_version,
      count: between.length,
      releases: between.map { |v| summarize_release(v) }
    }
  end
  render(result)
end