evnx/lib.rs
1//! evnx — Manage .env files with validation, secret scanning, and format conversion.
2//!
3//! # Library Usage
4//!
5//! ```rust
6//! use evnx::schema::{loader, resolver, formatter};
7//!
8//! // Resolve variables for a service
9//! let schema = loader::schema()?;
10//! let pg = &schema.services.databases["postgresql"];
11//! let vars = resolver::resolve_service("postgresql", pg)?;
12//! let content = formatter::format_addition(&vars)?;
13//! // Write `content` to .env.example
14//! # Ok::<_, anyhow::Error>(())
15//! ```
16//!
17//! # Architecture
18//!
19//! - `schema/` — Reusable core: JSON schema, resolver, formatter
20//! - `commands/` — CLI handlers (init, add, validate, etc.)
21//! - `utils/` — Shared utilities (file I/O, formatting)
22
23// ─────────────────────────────────────────────────────────────
24// Public API
25// ─────────────────────────────────────────────────────────────
26
27pub mod cli;
28pub mod commands;
29pub mod core;
30pub mod docs;
31pub mod formats;
32pub mod schema;
33pub mod utils;
34
35pub use cli::{AddTarget, Cli, Commands};
36pub use commands::validate::{Issue, IssueType, ValidationConfig, ValidationResult};
37pub use schema::{
38 formatter::{format_addition, format_env_example, format_env_template, generate_preview},
39 loader::{
40 find_framework, find_service, get_frameworks_for_language, get_services_grouped,
41 list_blueprints, schema as load_schema,
42 },
43 models::{Schema, VarCollection, VarMetadata, VarSource},
44 query::{filter_by_tag, list_tags, search_frameworks, search_services},
45 resolver::{
46 resolve_architect_selection, resolve_blueprint, resolve_framework, resolve_service,
47 },
48};