praxis/lib.rs
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2024 Praxis Contributors
3
4//! Server bootstrap for the Praxis proxy.
5
6pub(crate) mod pipelines;
7pub(crate) mod reload;
8mod server;
9pub(crate) mod watcher;
10pub use pipelines::resolve_pipelines;
11pub use praxis_core::{config::load_config, logging::init_tracing};
12pub use server::{check_root_privilege, fatal, resolve_config_path, run_server, run_server_with_registry};
13
14// -----------------------------------------------------------------------------
15// External Filter Discovery
16// -----------------------------------------------------------------------------
17
18// Provides: fn register_external_filters(&mut FilterRegistry)
19include!(concat!(env!("OUT_DIR"), "/external_filters.rs"));
20
21/// Build a [`FilterRegistry`] with built-in and auto-discovered external
22/// filters.
23///
24/// External filter crates are discovered at build time via
25/// `[package.metadata.praxis-filters]` markers in their `Cargo.toml`.
26/// This is the standard registry used by the `praxis` binary; callers
27/// that need a custom registry should use [`run_server_with_registry`]
28/// instead.
29///
30/// [`FilterRegistry`]: praxis_filter::FilterRegistry
31#[must_use]
32pub fn build_full_registry() -> praxis_filter::FilterRegistry {
33 let mut registry = praxis_filter::FilterRegistry::with_builtins();
34 register_external_filters(&mut registry);
35 registry
36}