bonds_core/lib.rs
1//! # bonds-core
2//!
3//! Core library for creating and managing bonds (symlink-based directory links)
4//! backed by SQLite persistence.
5//!
6//! ## Quick example
7//! ```no_run
8//! use bonds_core::{BondError, BondManager};
9//! use std::path::PathBuf;
10//!
11//! // `BondManager::new(None)` uses ~/.bonds/bonds.db by default.
12//! let manager = BondManager::new(None)?;
13//! let source = PathBuf::from("/path/to/source");
14//! let target = PathBuf::from("/path/to/target-link");
15//!
16//! // This creates a symlink on disk and persists the record in SQLite.
17//! let _bond = manager.create_bond(source, target, Some("my-bond".to_string()))?;
18//! # Ok::<(), BondError>(())
19//! ```
20
21/// Bond domain model types (for example, `Bond`).
22pub mod bond;
23/// User configuration loading/saving (`~/.bonds/config.toml`).
24pub mod config;
25/// Public error types returned by this crate.
26pub mod error;
27/// Event and hook types for lifecycle notifications.
28pub mod events;
29/// High-level manager for bond lifecycle operations.
30pub mod manager;
31/// Query builder types for filtering bonds.
32pub mod query;
33
34pub use bond::Bond;
35pub use config::BondsConfig;
36pub use error::{BondError, ErrorKind};
37pub use events::{BondBrokenReason, BondEvent, BondEventHook, BondEventKind, BondEventPayload};
38pub use manager::BondManager;
39pub use query::{BondQuery, MetadataFilter};