Current section

Files

Jump to
altworx_runbox lib runbox application.ex
Raw

lib/runbox/application.ex

defmodule Runbox.Application do
@moduledoc false
use Application
alias Runbox.Utils.Path, as: PathUtils
@impl true
def start(type, args) do
:ok = set_altworx_root()
:ok = check_configuration()
case Application.fetch_env!(:runbox, :mode) do
:master -> start_master(type, args)
:slave -> start_slave(type, args)
end
end
defp set_altworx_root do
# On master, the altworx root is empty, so it is set to PWD.
#
# On slave, the altworx root is already passed and set explicitly by
# master. Except when the master node runs older runbox and does not pass
# the altworx root. In such case the altworx root is set to PWD.
if is_nil(PathUtils.get_altworx_root()) do
:ok = PathUtils.set_altworx_root(System.get_env("PWD"))
end
:ok
end
defp check_configuration do
Application.fetch_env!(:runbox, :scenario_config_dir)
:ok
end
defp start_master(_type, _args) do
children = []
opts = [strategy: :one_for_one, name: Runbox.MasterSup]
Supervisor.start_link(children, opts)
end
defp start_slave(_type, _args) do
children = [{Runbox.Scenario.Helper, []}]
opts = [strategy: :one_for_one, name: Runbox.SlaveSup]
Supervisor.start_link(children, opts)
end
end