1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// SPDX-FileCopyrightText: 2026 Michael Jansen <mike@michael-jansen.biz>
// SPDX-License-Identifier: MPL-2.0
//! Ferroclass — hierarchical inventory management compatible with Python reclass.
//!
//! Ferroclass reads a directory tree of YAML class and node definitions,
//! resolves class inheritance and variable interpolation (`$[...]` references
//! and inventory queries), merges parameters, and produces structured output
//! for Ansible, Salt, or plain reclass-compatible formats.
//!
//! # Quick start
//!
//! ```
//! use ferroclass::{Inventory, Options, StorageOptions, StorageType};
//!
//! let options = Options::default();
//! // Load from a YAML filesystem layout (requires a real directory):
//! // let inventory = ferroclass::load(&options.storage_options).unwrap();
//! // Merge a single node:
//! // let merged = inventory.merge_node("web01.example.com").unwrap();
//! ```
//!
//! # Crate layout
//!
//! - [`inventory`] — core domain types, loading, and merging
//! - [`output`] — formatting to Ansible, Salt, and reclass YAML/JSON
//! - [`configuration`] — loading `reclass-config.yml` configuration files
//! - [`storage`] — filesystem backends for reading YAML classes and nodes
//! - [`cli`] — CLI argument definitions shared by the binaries
extern crate core;
pub
pub
// Re-export the most commonly used types at the crate root for convenience.
// These are the primary entry points for library consumers.
pub use Inventory;
pub use load;
pub use load_from_yaml_string;
pub use load_from_yaml_string_with_uri;
pub use Options;
pub use ;