30 lines
636 B
Elixir
Executable file
30 lines
636 B
Elixir
Executable file
#!/usr/bin/env elixir
|
|
|
|
Mix.install([
|
|
{:jason, "~> 1.0"}
|
|
])
|
|
|
|
%{"source_files" => data} =
|
|
"cover/excoveralls.json"
|
|
|> File.read!()
|
|
|> Jason.decode!()
|
|
|
|
{total_covered, total_total} =
|
|
data
|
|
|> Enum.reduce({0,0}, fn %{"coverage" => cover}, {covered, total} ->
|
|
file_covered =
|
|
cover
|
|
|> Enum.reduce(0, &(if is_integer(&1) && &1 > 0, do: &2 + 1, else: &2))
|
|
|
|
file_total =
|
|
cover
|
|
|> Enum.reduce(0, &(if is_nil(&1), do: &2, else: &2 + 1))
|
|
|
|
{covered + file_covered, total + file_total}
|
|
end)
|
|
|
|
ratio =
|
|
(total_covered / total_total)
|
|
|> Float.round(3)
|
|
|
|
File.write!("metrics.txt", "coverage #{ratio}")
|