HexdocsMcp.Version (HexDocs MCP v0.6.0)

View Source

Utilities for semantic version comparison and handling.

Summary

Functions

Compares two semantic versions.

Groups search results by package and filters to only the latest version of each.

Finds the latest version from a list of versions.

Functions

compare(v1, v2)

Compares two semantic versions.

Returns:

  • :gt if version1 > version2
  • :lt if version1 < version2
  • :eq if version1 == version2

Examples

iex> HexdocsMcp.Version.compare("3.5.10", "3.5.9")
:gt

iex> HexdocsMcp.Version.compare("3.5.9", "3.5.10")
:lt

iex> HexdocsMcp.Version.compare("3.5.9", "3.5.9")
:eq

iex> HexdocsMcp.Version.compare("1.0.0-rc.1", "1.0.0")
:lt

iex> HexdocsMcp.Version.compare("latest", "3.5.9")
:eq

iex> HexdocsMcp.Version.compare("3.5.9", "latest")
:eq

filter_latest_versions(results)

Groups search results by package and filters to only the latest version of each.

Examples

iex> results = [
...>   %{metadata: %{package: "ash", version: "3.5.9"}},
...>   %{metadata: %{package: "ash", version: "3.5.10"}},
...>   %{metadata: %{package: "phoenix", version: "1.7.0"}}
...> ]
iex> HexdocsMcp.Version.filter_latest_versions(results)
[
  %{metadata: %{package: "ash", version: "3.5.10"}},
  %{metadata: %{package: "phoenix", version: "1.7.0"}}
]

find_latest(versions)

Finds the latest version from a list of versions.

Examples

iex> HexdocsMcp.Version.find_latest(["3.5.9", "3.5.10", "3.5.2"])
"3.5.10"

iex> HexdocsMcp.Version.find_latest(["1.0.0-rc.1", "1.0.0", "0.9.0"])
"1.0.0"

iex> HexdocsMcp.Version.find_latest(["latest"])
"latest"

iex> HexdocsMcp.Version.find_latest([])
nil