Current section

Files

Jump to
doggo lib mix tasks dog.modifiers.ex
Raw

lib/mix/tasks/dog.modifiers.ex

defmodule Mix.Tasks.Dog.Modifiers do
@shortdoc "Lists all modifier classes"
@moduledoc """
Returns a list of all modifier classes.
## Usage
List modifier classes:
mix dog.modifiers
Write modifier classes to file:
mix dog.modifiers -o assets/modifiers.txt
"""
use Mix.Task
@parser_opts [
aliases: [o: :output],
strict: [output: :string]
]
@impl Mix.Task
def run(args) do
case OptionParser.parse(args, @parser_opts) do
{switches, [], []} ->
modifiers = list_modifiers()
if path = Keyword.get(switches, :output) do
File.write(path, modifiers)
else
IO.puts(modifiers)
end
_ ->
IO.puts(@moduledoc)
end
end
defp list_modifiers do
Doggo.modifier_classes()
|> Enum.flat_map(fn {_, classes} -> classes end)
|> Enum.join("\n")
end
end