Skip to main content
Glama
check_embeddings.ex2.54 kB
defmodule HexdocsMcp.CLI.CheckEmbeddings do @moduledoc """ Functions for checking if embeddings exist for a package. """ @behaviour HexdocsMcp.Behaviours.CLI.CheckEmbeddings alias HexdocsMcp.CLI.Utils @usage """ Usage: [SYSTEM_COMMAND] check_embeddings PACKAGE [VERSION] Checks if embeddings exist for a specific package and version. Arguments: PACKAGE - Hex package name to check (required) VERSION - Package version (optional, defaults to latest) Options: --help, -h - Show this help Examples: [SYSTEM_COMMAND] check_embeddings phoenix # Check if embeddings exist for latest phoenix [SYSTEM_COMMAND] check_embeddings phoenix 1.7.0 # Check if embeddings exist for phoenix 1.7.0 """ def main(args) do case parse_args(args) do {:ok, {package, version}} -> check_embeddings(package, version) {:help} -> Utils.output_info(usage()) {:error, message} -> Utils.output_error(message) end end defp check_embeddings(package, version) do embeddings_module = HexdocsMcp.Config.embeddings_module() version = version || "latest" if embeddings_module.embeddings_exist?(package, version) do count = get_embeddings_count(package, version) Utils.output_info("#{Utils.check()} Embeddings exist for #{package} #{version}") Utils.output_info(" Total embeddings: #{count}") :ok else Utils.output_info("#{Utils.cross()} No embeddings found for #{package} #{version}") Utils.output_info(" Run 'fetch_docs #{package} #{version}' to generate embeddings") :error end end defp get_embeddings_count(package, version) do import Ecto.Query alias HexdocsMcp.Embeddings.Embedding alias HexdocsMcp.Repo query = from e in Embedding, where: e.package == ^package and e.version == ^version, select: count(e.id) Repo.one(query) || 0 end defp parse_args(args) do {opts, args} = OptionParser.parse!(args, aliases: [h: :help], strict: [help: :boolean] ) cond do opts[:help] -> {:help} length(args) == 0 -> {:error, "Package name is required"} length(args) > 2 -> {:error, "Too many arguments"} true -> [package | rest] = args version = List.first(rest) {:ok, {package, version}} end end defp usage do String.replace(@usage, "[SYSTEM_COMMAND]", HexdocsMcp.Config.system_command()) end end

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bradleygolden/hexdocs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server