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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//! # cfgmatic - Configuration Management Framework for Rust
//!
//! **cfgmatic** is a facade crate that re-exports functionality from
//! specialized sub-crates.
//!
//! ## Crate Overview
//!
//! | Crate | Purpose |
//! | ------------------- | ---------------------------------- |
//! | `cfgmatic-core` | Core types and traits |
//! | `cfgmatic-paths` | Platform-specific path discovery |
//! | `cfgmatic-merge` | Configuration merging strategies |
//! | `cfgmatic-schema` | Schema and introspection |
//! | `cfgmatic-source` | Configuration sources (file, env) |
//! | `cfgmatic-reactive` | Reactive configuration updates |
//! | `cfgmatic-plan` | Terraform-like plan/apply workflow |
//!
//! ## Feature Flags
//!
//! | Feature | Description | Default |
//! | ---------- | --------------------- | ------- |
//! | `source` | Configuration sources | Yes |
//! | `plan` | Plan/Apply workflow | Yes |
//! | `reactive` | Config subscriptions | No |
//! | `schema` | Schema/introspection | No |
//!
//! ## Quick Start
//!
//! ```rust,no_run
//! // Path discovery
//! use cfgmatic::paths::PathsBuilder;
//! let finder = PathsBuilder::new("myapp").build();
//! let _ = finder;
//!
//! // Configuration sources (with "source" feature)
//! use cfgmatic::source::*;
//! let config: std::collections::BTreeMap<String, String> = load_from_file("config.toml")?;
//! # let _ = config;
//!
//! // Plan/Apply workflow (with "plan" feature)
//! use cfgmatic::plan::*;
//! # Ok::<(), Box<dyn std::error::Error>>(())
//! ```
// Core - always available
pub use cfgmatic_core as core;
// Paths - always available
pub use cfgmatic_paths as paths;
// Merge - always available
pub use cfgmatic_merge as merge;
// Schema - optional
pub use cfgmatic_schema as schema;
// Source - optional
pub use cfgmatic_source as source;
// Plan - optional
pub use cfgmatic_plan as plan;
// Reactive - optional
pub use cfgmatic_reactive as reactive;