Packages
exrm
1.0.1
1.0.8
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc8
1.0.0-rc7
1.0.0-rc6
1.0.0-rc5
1.0.0-rc4
1.0.0-rc3
0.19.9
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.8
0.18.7
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.0
0.15.3
0.15.2
0.15.1
0.15.0
0.14.17
0.14.16
0.14.15
0.14.14
0.14.13
0.14.12
0.14.11
0.14.10
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.3
0.14.2
0.14.1
0.14.0
0.12.12
0.12.11
0.12.10
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.3
0.10.1
0.10.0
0.9.2
0.9.1
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.15
0.6.14
0.6.13
0.6.12
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.7
Exrm, or Elixir Release Manager, provides mix tasks for building, upgrading, and controlling release packages for your application.
Current section
Files
Jump to
Current section
Files
lib/exrm/utils/logger.ex
defmodule ReleaseManager.Utils.Logger do
use GenServer
def start_link() do
GenServer.start_link(__MODULE__, %{verbosity: :normal}, name: __MODULE__)
end
def configure(verbosity) when is_atom(verbosity) do
GenServer.cast(__MODULE__, {:configure, verbosity})
end
@doc "Print an informational message without color"
def debug(message), do: GenServer.cast(__MODULE__, {:log, :debug, message})
@doc "Print an informational message in green"
def info(message), do: GenServer.cast(__MODULE__, {:log, :info, message})
@doc "Print a warning message in yellow"
def warn(message), do: GenServer.cast(__MODULE__, {:log, :warn, message})
@doc "Print a notice in yellow"
def notice(message), do: GenServer.cast(__MODULE__, {:log, :notice, message})
@doc "Print an error message in red"
def error(message), do: GenServer.cast(__MODULE__, {:log, :error, message})
def handle_cast({:configure, verbosity}, config) do
{:noreply, %{config | :verbosity => verbosity}}
end
def handle_cast({:log, :error, message}, config) do
print_error(message)
{:noreply, config}
end
def handle_cast({:log, :warn, message}, %{verbosity: v} = config)
when v in [:quiet, :normal, :verbose] do
print_warn(message)
{:noreply, config}
end
def handle_cast({:log, :notice, message}, %{verbosity: v} = config)
when v in [:normal, :verbose] do
print_notice(message)
{:noreply, config}
end
def handle_cast({:log, :info, message}, %{verbosity: v} = config)
when v in [:normal, :verbose] do
print_info(message)
{:noreply, config}
end
def handle_cast({:log, :debug, message}, %{verbosity: :verbose} = config) do
print_debug(message)
{:noreply, config}
end
def handle_cast({:log, :debug, _}, config) do
{:noreply, config}
end
def print_debug(message), do: IO.puts "==> #{message}"
def print_info(message), do: IO.puts "==> #{IO.ANSI.green}#{message}#{IO.ANSI.reset}"
def print_warn(message), do: IO.puts "==> #{IO.ANSI.yellow}#{message}#{IO.ANSI.reset}"
def print_notice(message), do: IO.puts "#{IO.ANSI.yellow}#{message}#{IO.ANSI.reset}"
def print_error(message), do: IO.puts "==> #{IO.ANSI.red}#{message}#{IO.ANSI.reset}"
end