Packages
islands_engine
0.1.51
0.2.65
0.2.64
0.2.63
0.2.62
0.2.61
0.2.60
0.2.59
0.2.58
0.2.56
0.2.55
0.2.54
0.2.53
0.2.52
0.2.51
0.2.50
0.2.49
0.2.48
0.2.47
0.2.46
0.2.45
0.2.44
0.2.43
0.2.42
0.2.41
0.2.40
0.2.39
0.2.38
0.2.37
0.2.36
0.2.35
0.2.34
0.2.33
0.2.32
0.2.31
0.2.30
0.2.29
0.2.28
0.2.27
0.2.25
0.2.24
0.2.23
0.2.22
0.2.21
0.2.20
0.2.19
0.2.18
0.2.17
0.2.16
0.2.15
0.2.13
0.2.12
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.81
0.1.80
0.1.79
0.1.78
0.1.77
0.1.76
0.1.75
0.1.73
0.1.72
0.1.71
0.1.70
0.1.69
0.1.68
0.1.67
0.1.66
0.1.65
0.1.64
0.1.63
0.1.62
0.1.61
0.1.60
0.1.59
0.1.58
0.1.57
0.1.56
0.1.55
0.1.54
0.1.53
0.1.52
0.1.51
0.1.50
0.1.49
0.1.48
0.1.47
0.1.46
0.1.45
0.1.44
0.1.43
0.1.42
0.1.41
0.1.40
0.1.39
0.1.38
0.1.37
0.1.36
0.1.35
0.1.34
0.1.33
0.1.32
0.1.31
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.0
Models the Game of Islands.
Current section
Files
Jump to
Current section
Files
lib/islands/engine/app.ex
defmodule Islands.Engine.App do
use Application
use PersistConfig
alias __MODULE__
alias Islands.Engine.Board.Server
alias Islands.Engine.Sup
@ets Application.get_env(@app, :ets_name)
# @reg Application.get_env(@app, :registry)
@error_path Application.get_env(:logger, :error_log)[:path]
@info_path Application.get_env(:logger, :info_log)[:path]
@warn_path Application.get_env(:logger, :warn_log)[:path]
@spec start(Application.start_type(), term) :: {:ok, pid}
def start(_type, :ok) do
[@error_path, @info_path, @warn_path] |> Enum.each(&clear_log/1)
:ets.new(@ets, [:public, :named_table])
[
# Child spec relying on use GenServer...
{Server, :ok},
# Child spec relying on use Supervisor...
{Sup, :ok}
]
|> Supervisor.start_link(name: App, strategy: :one_for_one)
end
## Private functions
@spec clear_log(Path.t()) :: :ok
defp clear_log(log_path) do
log_path = Path.expand(log_path)
dir_path = Path.dirname(log_path)
case File.mkdir_p(dir_path) do
:ok -> :ok
{:error, reason} -> error(reason, "Couldn't create directory", dir_path)
end
case File.write(log_path, "") do
:ok -> :ok
{:error, reason} -> error(reason, "Couldn't clear log file", log_path)
end
end
@spec error(File.posix(), String.t(), Path.t()) :: :ok
defp error(reason, msg, path) do
IO.puts("#{msg} #{inspect(path)}:")
reason |> :file.format_error() |> IO.puts()
end
end