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
//! Init module - Support code for project initialization
//!
//! This module provides domain types, template definitions, and validation helpers
//! for the init command. It contains only data structures and pure functions - no
//! business logic or UI code.
//!
//! # Architecture
//!
//! The init functionality follows the 3-layer architecture:
//!
//! ```text
//! commands/init.rs → Pure Args struct
//! ↓
//! handlers/init.rs → Orchestration (UI, flow control)
//! ↓
//! services/ → Business logic
//! - init_service.rs → Project structure operations
//! - project_template_service.rs → Template file generation
//! ↓
//! ui/init_wizard.rs → Interactive UI component
//! ↓
//! init/ module (this) → Domain types and helpers
//! - types.rs → TemplateType, NodeSelection, ProjectConfig
//! - templates.rs → Template definitions (Basic, Rover, Arm, Humanoid)
//! - defaults.rs → Default node selections per template
//! - validation.rs → Project name validation
//! ```
//!
//! # Contents
//!
//! - **types**: Domain types (TemplateType, NodeSelection, ProjectConfig)
//! - **templates**: Robot template definitions and metadata
//! - **defaults**: Default node selections for each template
//! - **validation**: Input validation helpers
// Re-exports for convenience
pub use get_template_defaults;
pub use get_all_templates;