Current section

Files

Jump to
clean_mixer lib ui list_task.ex
Raw

lib/ui/list_task.ex

defmodule CleanMixer.UI.ListTask do
alias CleanMixer.UI.ArchMapRendering.TextRenderer
alias CleanMixer.UI.CLI
alias CleanMixer.UI.ArchMapFilter
@spec run(list(String.t()), TextRenderer.t()) :: :ok
def run(args, renderer, extra_cli_desc \\ []) do
Mix.Task.run("compile")
params = parse_params(args, extra_cli_desc)
CleanMixer.arch_map(include_hex: params[:include_hex])
|> ArchMapFilter.filter(params)
|> renderer.render(params)
|> IO.puts()
:ok
end
defp parse_params(args, extra_cli_desc) do
CLI.parse_params(args, cli_description(extra_cli_desc))
end
defp cli_description(extra_cli_desc) do
[
name: extra_cli_desc[:name],
description: extra_cli_desc[:description],
parse_double_dash: true,
options: ArchMapFilter.cli_options() ++ Keyword.get(extra_cli_desc, :options, []),
flags:
[
include_hex: [
value_name: "INCLUDE_HEX",
long: "--include-hex",
help: "include hex dependencies"
]
] ++ Keyword.get(extra_cli_desc, :flags, [])
]
end
end