Current section
Files
Jump to
Current section
Files
lib/mix/tasks/dialup.context_map.ex
defmodule Mix.Tasks.Dialup.ContextMap do
@moduledoc """
Generates a Mermaid context map from `Dialup.Contexts` declarations.
mix dialup.context_map
Writes `context_map.mmd` in the current working directory.
"""
use Mix.Task
@shortdoc "Generates a Mermaid context map from Dialup.Contexts declarations"
@impl Mix.Task
def run(_args) do
Mix.Task.run("compile")
contexts = Dialup.Contexts.load_contexts()
if contexts == [] do
Mix.raise(
"No modules exporting __dialup_contexts__/0 were found. Define one with use Dialup.Contexts."
)
end
mermaid = Dialup.Contexts.generate_mermaid(contexts)
path = "context_map.mmd"
File.write!(path, mermaid)
Mix.shell().info("Context map written to #{path}")
Mix.shell().info("\n#{mermaid}")
end
end