Current section
Files
Jump to
Current section
Files
lib/mix/tasks/component_cycles.ex
defmodule Mix.Tasks.CleanMixer.ComponentCycles do
use Mix.Task
alias CleanMixer.Workspace
alias CleanMixer.Graph
@shortdoc "Lists all found cycles between components"
@impl Mix.Task
def run(_args, _options \\ []) do
Mix.Task.run("compile")
CleanMixer.new_workspace()
|> Workspace.component_cycles()
|> Graph.uniq_cycles()
|> render_cycles()
end
defp render_cycles([]) do
IO.puts("No cycles found")
end
defp render_cycles(cycles) do
IO.puts("Cycles found:")
Enum.each(cycles, &render_cycle/1)
end
defp render_cycle(cycle) do
cycle |> Enum.map(& &1.name) |> Enum.join(" -> ") |> IO.puts()
end
end