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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//! Convention presets for common project structures
//!
//! This module provides pre-configured convention presets that generate complete
//! project structures following established patterns. Presets include RDF ontologies,
//! templates, and configuration files needed for specific project types.
//!
//! ## Features
//!
//! - **Pre-configured Structures**: Complete project scaffolding with RDF and templates
//! - **Extensible Design**: Trait-based system for adding new presets
//! - **RDF Integration**: Automatic generation of RDF ontology files
//! - **Template Generation**: Pre-configured template files for common patterns
//!
//! ## Available Presets
//!
//! - **clap-noun-verb**: CLI projects using clap with noun-verb command structure
//!
//! ## Examples
//!
//! ### Using a Preset
//!
//! ```rust,no_run
//! use ggen_cli_lib::conventions::presets::{get_preset, ConventionPreset};
//! use std::path::Path;
//!
//! # fn main() -> anyhow::Result<()> {
//! let preset = get_preset("clap-noun-verb")
//! .expect("Preset not found");
//!
//! // Create project structure
//! preset.create_structure(Path::new("."))?;
//!
//! // Get RDF files to create
//! let rdf_files = preset.rdf_files();
//! for (path, content) in rdf_files {
//! println!("RDF file: {}", path);
//! }
//! # Ok(())
//! # }
//! ```
//!
//! ### Listing Available Presets
//!
//! ```rust,no_run
//! use ggen_cli_lib::conventions::presets::list_presets;
//!
//! let presets = list_presets();
//! for preset_name in presets {
//! println!("Available preset: {}", preset_name);
//! }
//! ```
use Result;
use Path;
/// Trait for convention presets
/// Get preset by name
/// List all available presets