lib/tasks/generate_examples.ex

defmodule Mix.Tasks.GenerateExamples do
  use Mix.Task

  @shortdoc "generates a bunch of sample svgs"

  def run(_argv) do
    examples() |> Enum.each(&generate_example/1)
  end

  defp examples do
    %{
      "circle.svg" => [{:circle, %{cx: 50, cy: 50, r: 40}, nil}],
      "hexagon.svg" => [{:hexagon, %{cx: 50, cy: 50, r: 40}}],
      "pentagon.svg" => [{:pentagon, %{cx: 50, cy: 50, r: 40}}],
      "octagon.svg" => [{:octagon, %{cx: 50, cy: 50, r: 40}}]
    }
  end

  defp generate_example({filename, contents}) do
    svg = ChunkySVG.render(contents)
    File.write!("examples/#{filename}", svg)
  end
end