66 lines
1.5 KiB
Elixir
66 lines
1.5 KiB
Elixir
defmodule Farmbot.System.Init.FSCheckup do
|
|
@moduledoc false
|
|
use Supervisor
|
|
use Farmbot.Logger
|
|
|
|
@behaviour Farmbot.System.Init
|
|
@data_path Application.get_env(:farmbot, :data_path)
|
|
@data_path || Mix.raise("Unconfigured data path.")
|
|
|
|
@ref Farmbot.Project.commit()
|
|
@version Farmbot.Project.version()
|
|
@target Farmbot.Project.target()
|
|
@env Farmbot.Project.env()
|
|
|
|
@doc false
|
|
def start_link(_, opts \\ []) do
|
|
Supervisor.start_link(__MODULE__, [], opts)
|
|
end
|
|
|
|
@doc false
|
|
def init([]) do
|
|
do_checkup()
|
|
:ignore
|
|
end
|
|
|
|
defp do_checkup do
|
|
check_file = Path.join(@data_path, "boot")
|
|
|
|
unless File.exists?(@data_path) do
|
|
File.mkdir(@data_path)
|
|
end
|
|
|
|
setup_multi_user()
|
|
|
|
Logger.busy(3, "Checking #{check_file}")
|
|
msg = """
|
|
version = #{@version}
|
|
commit = #{@ref}
|
|
target = #{@target}
|
|
env = #{@env}
|
|
"""
|
|
case File.write(check_file, msg) do
|
|
:ok ->
|
|
Process.sleep(500)
|
|
for fw <- Path.wildcard(Path.join(@data_path, "*.fw")) do
|
|
Logger.busy(3, "Deleting: #{fw}")
|
|
File.rm_rf(fw)
|
|
end
|
|
Elixir.Logger.add_backend(LoggerBackendEcto)
|
|
:ok
|
|
|
|
err ->
|
|
Logger.busy(3, "Filesystem not up yet (#{inspect(err)})...")
|
|
Process.sleep(1000)
|
|
do_checkup()
|
|
end
|
|
end
|
|
|
|
defp setup_multi_user do
|
|
multiuser_dir = Path.join([@data_path, "users", "default"])
|
|
unless File.exists?(multiuser_dir) do
|
|
File.mkdir_p(multiuser_dir)
|
|
end
|
|
end
|
|
end
|