Skip to main content

_syspulse/
lib.rs

1use pyo3::prelude::*;
2
3mod config;
4mod daemon;
5mod errors;
6mod health;
7mod instance;
8mod log_config;
9mod manager;
10mod paths;
11mod resources;
12mod types;
13
14#[pymodule]
15fn _syspulse(m: &Bound<'_, PyModule>) -> PyResult<()> {
16    // Version
17    m.add("__version__", env!("CARGO_PKG_VERSION"))?;
18
19    // Core classes
20    m.add_class::<daemon::Daemon>()?;
21    m.add_class::<instance::DaemonInstance>()?;
22    m.add_class::<manager::SyspulseClient>()?;
23
24    // Config classes
25    m.add_class::<health::HealthCheck>()?;
26    m.add_class::<resources::ResourceLimits>()?;
27    m.add_class::<log_config::LogConfig>()?;
28
29    // Enums
30    m.add_class::<types::DaemonStatus>()?;
31    m.add_class::<types::HealthStatus>()?;
32    m.add_class::<types::RestartPolicyType>()?;
33    m.add_class::<health::HealthCheckType>()?;
34
35    // Exceptions
36    m.add(
37        "SyspulseError",
38        m.py().get_type::<errors::SyspulseError>(),
39    )?;
40    m.add(
41        "DaemonNotFoundError",
42        m.py().get_type::<errors::DaemonNotFoundError>(),
43    )?;
44    m.add(
45        "DaemonAlreadyExistsError",
46        m.py().get_type::<errors::DaemonAlreadyExistsError>(),
47    )?;
48    m.add(
49        "InvalidStateError",
50        m.py().get_type::<errors::InvalidStateError>(),
51    )?;
52
53    // Functions
54    m.add_function(wrap_pyfunction!(config::from_sys, m)?)?;
55    m.add_function(wrap_pyfunction!(config::from_toml, m)?)?;
56    m.add_function(wrap_pyfunction!(paths::data_dir, m)?)?;
57    m.add_function(wrap_pyfunction!(paths::socket_path, m)?)?;
58
59    Ok(())
60}