lib/test_iex/log.ex

defmodule TestIex.Log do
  alias TestIex.Config
  require Logger

  def debug(msg) do
    if Config.debug() do
      [msg]
      |> colorize()
      |> Logger.debug()
    end
  end

  def log_msg(msg), do: log([msg])

  def log_file_and_line(file, line) do
    log([
      " Running ",
      :red,
      :bright,
      inspect(file),
      :default_color,
      " for line ",
      :red,
      :bright,
      line
    ])
  end

  def log_files(files) do
    log([
      " Running ",
      :red,
      :bright,
      inspect(files)
    ])
  end

  defp log(parts) when is_list(parts) do
    parts
    |> colorize()
    |> Logger.info()
  end

  def colorize(parts) when is_list(parts) do
    ([
       :bright,
       :green,
       "[test_iex] ",
       :default_color
     ] ++ parts)
    |> IO.ANSI.format()
  end
end