defmodule Mix.Tasks.PhxWc.GenIcons do # Generate Material Design Icons # try to define with macro, it's too slow @moduledoc """ Generate Phoenix.WebComponent.MaterialDesignIcons fron 7000+ svg files """ use Mix.Task @shortdoc "Generate Phoenix.WebComponent.MaterialDesignIcons.ex file" def run(_) do Mix.Task.run("app.start") icons = File.ls!(Application.app_dir(:phoenix_webcomponent, "priv/mdi/svg")) |> Enum.filter(&String.ends_with?(&1, ".svg")) |> Enum.map(&String.trim(&1, ".svg")) quoted = EEx.compile_file("#{__DIR__}/material_design_icons.eex") {result, _bindings} = Code.eval_quoted(quoted, icons: icons) fl = Path.expand("../../phoenix_webcomponent/material_design_icons.ex", __DIR__) File.write!(fl, result) end end