forked from github/quartz
41 lines
1.1 KiB
Elixir
41 lines
1.1 KiB
Elixir
defmodule OrgGarden.Supervisor do
|
|
@moduledoc """
|
|
Supervises development server components.
|
|
|
|
Strategy: :one_for_all
|
|
If either child fails, restart both to ensure consistent state.
|
|
|
|
Children:
|
|
1. OrgGarden.Watcher - watches .org files for changes
|
|
2. OrgGarden.Quartz - runs Quartz Node.js server
|
|
|
|
## Usage
|
|
|
|
OrgGarden.Supervisor.start_link(
|
|
notes_dir: "/path/to/notes",
|
|
output_dir: "/path/to/output",
|
|
content_dir: "/path/to/output/content",
|
|
pipeline_opts: %{zotero_url: "...", ...},
|
|
transforms: [OrgGarden.Transforms.Citations],
|
|
port: 8080,
|
|
ws_port: 3001
|
|
)
|
|
"""
|
|
use Supervisor
|
|
|
|
def start_link(opts) do
|
|
Supervisor.start_link(__MODULE__, opts, name: __MODULE__)
|
|
end
|
|
|
|
@impl true
|
|
def init(opts) do
|
|
children = [
|
|
{OrgGarden.Watcher,
|
|
Keyword.take(opts, [:notes_dir, :output_dir, :content_dir, :pipeline_opts, :transforms])},
|
|
{OrgGarden.Quartz, Keyword.take(opts, [:content_dir, :port, :ws_port])}
|
|
]
|
|
|
|
Supervisor.init(children, strategy: :one_for_all)
|
|
end
|
|
end
|