lib/foundry/status/stack_versions.ex

defmodule Foundry.Status.StackVersions do
  @moduledoc """
  Extracts resolved stack dependency versions from mix.lock.
  """

  @tracked ~w[elixir ash ash_postgres phoenix reactor oban]a

  def read(project_root) do
    case Foundry.MixLock.read_versions(project_root, @tracked) do
      {:error, _} ->
        Map.new(@tracked, fn lib ->
          {to_string(lib), nil}
        end)

      versions ->
        Map.new(@tracked, fn lib ->
          {to_string(lib), Map.get(versions, lib)}
        end)
    end
  end
end