Current section

Files

Jump to
bless lib bless.ex
Raw

lib/bless.ex

defmodule Bless do
@moduledoc """
A mix task for running test suites
"""
def default do
[
compile: ["--warnings-as-errors", "--force"],
"chaps.html": ["--raise"],
"coveralls.html": ["--raise"],
format: ["--check-formatted"],
credo: [],
"deps.unlock": ["--check-unused"]
]
|> Enum.filter(&available?/1)
end
@option_definitions [seed: :string]
@option_mappings [seed: [:test, :"chaps.html", :"coveralls.html"]]
def combine_args({task, subargs} = _bless_component, archargs) do
{parsed_args, _other_args, _invalid_args} =
OptionParser.parse(archargs, strict: @option_definitions)
parsed_args
|> Enum.filter(fn {switch, _val} ->
task in Keyword.get(@option_mappings, switch)
end)
|> OptionParser.to_argv()
|> Kernel.++(subargs)
end
# chaps-ignore-start
defp available?({:chaps, _args}),
do: Code.ensure_loaded?(Mix.Tasks.Chaps)
defp available?({:coveralls, _args}),
do: Code.ensure_loaded?(Mix.Tasks.Coveralls)
# chaps-ignore-stop
defp available?({:"chaps.html", _args}),
do: Code.ensure_loaded?(Mix.Tasks.Chaps.Html)
defp available?({:"coveralls.html", _args}),
do: Code.ensure_loaded?(Mix.Tasks.Coveralls.Html)
defp available?({:credo, _args}),
do: Code.ensure_loaded?(Mix.Tasks.Credo)
defp available?({:format, _args}),
do: Code.ensure_loaded?(Mix.Tasks.Format)
defp available?({:"deps.unlock", args}) do
if "--check-unused" in args,
do: Version.match?(System.version(), "~> 1.10"),
else: true
end
defp available?(_check), do: true
end