defmodule GitHooks.Printer do @moduledoc false @type message :: String.t() @spec info(any, message, keyword) :: any def info(return_this, message, opts \\ []) do case Keyword.has_key?(opts, :append_first_arg) do true when is_binary(return_this) -> info(message <> return_this) true -> info(message <> inspect(return_this)) false -> info(message) end return_this end @spec info(message) :: :ok def info(message) do IO.puts([0x2197, " ", message]) end @spec warn(message) :: :ok def warn(message) do IO.puts([0x26A0, " ", message]) end @spec success(message) :: :ok def success(message) do IO.puts([0x2714, " ", message]) end @spec error(message) :: :ok def error(message) do IO.puts([0xD7, " ", message]) end end