Current section

Files

Jump to
next_ls lib next_ls runtime supervisor.ex
Raw

lib/next_ls/runtime/supervisor.ex

defmodule NextLS.Runtime.Supervisor do
@moduledoc false
use Supervisor
def start_link(init_arg) do
Supervisor.start_link(__MODULE__, init_arg)
end
@impl true
def init(init_arg) do
name = init_arg[:name]
lsp = init_arg[:lsp]
registry = init_arg[:registry]
logger = init_arg[:logger]
hidden_folder = init_arg[:path]
File.mkdir_p!(hidden_folder)
File.write!(Path.join(hidden_folder, ".gitignore"), "*\n")
db_name = :"db-#{name}"
sidecar_name = :"sidecar-#{name}"
db_activity = :"db-activity-#{name}"
Registry.register(registry, :runtime_supervisors, %{name: name})
children = [
{NextLS.Runtime.Sidecar, name: sidecar_name, db: db_name},
{NextLS.DB.Activity,
logger: logger, name: db_activity, lsp: lsp, timeout: Application.get_env(:next_ls, :indexing_timeout)},
{NextLS.DB,
logger: logger,
file: "#{hidden_folder}/nextls.db",
registry: registry,
name: db_name,
runtime: name,
activity: db_activity},
{NextLS.Runtime, init_arg[:runtime] ++ [name: name, registry: registry, parent: sidecar_name, db: db_name]}
]
Supervisor.init(children, strategy: :one_for_one)
end
end