Skip to main content

doido_generators/
lib.rs

1mod banner;
2mod cli;
3pub mod commands;
4pub mod generator;
5pub mod generators;
6pub mod new_options;
7pub mod project_generator;
8pub mod registry;
9pub mod templates;
10
11// CLI entry point (merged in from the former `doido-cli` crate).
12pub use cli::run;
13
14/// Absolute path to the doido workspace root, captured when `doido-generators`
15/// was built. Generated apps point their `doido-*` path dependencies here so a
16/// freshly generated app builds against the local framework crates.
17pub const TEMPLATE_WORKSPACE_PATH: &str = env!("DOIDO_GENERATOR_TEMPLATE_WORKSPACE_PATH");
18
19/// The doido release version generated apps depend on when this crate was built
20/// outside the workspace (i.e. from a published crates.io release). Mirrors the
21/// workspace version, so a published `doido-generators x.y.z` scaffolds apps
22/// that depend on `doido x.y.z`.
23pub const DOIDO_VERSION: &str = env!("CARGO_PKG_VERSION");
24
25/// Whether generated apps should use local `path` dependencies (`true`, set when
26/// `doido-generators` is built inside the workspace) or crates.io `version`
27/// dependencies (`false`, set once the crate is packaged/published). Decided at
28/// build time by `build.rs` from whether the sibling framework crates are on disk.
29pub const TEMPLATE_USE_PATH_DEPS: bool = {
30    let flag = env!("DOIDO_GENERATOR_USE_PATH_DEPS").as_bytes();
31    flag.len() == 1 && flag[0] == b'1'
32};
33
34pub use generator::{GeneratedFile, Generator};
35pub use generators::{
36    channel::ChannelGenerator, controller::ControllerGenerator, generator_gen::GeneratorGenerator,
37    job::JobGenerator, mailer::MailerGenerator, migration::MigrationGenerator,
38    model::ModelGenerator, new::ProjectGenerator, resource::ResourceGenerator,
39    scaffold::ScaffoldGenerator, storage_adapter::StorageAdapterGenerator,
40    storage_install::StorageInstallGenerator, templates_gen::TemplatesGenerator,
41};
42pub use registry::GeneratorRegistry;
43
44pub fn default_registry() -> GeneratorRegistry {
45    let mut reg = GeneratorRegistry::new();
46    reg.register(Box::new(ControllerGenerator));
47    reg.register(Box::new(ModelGenerator));
48    reg.register(Box::new(MigrationGenerator));
49    reg.register(Box::new(JobGenerator));
50    reg.register(Box::new(MailerGenerator));
51    reg.register(Box::new(ChannelGenerator));
52    reg.register(Box::new(ScaffoldGenerator));
53    reg.register(Box::new(ResourceGenerator));
54    reg.register(Box::new(StorageInstallGenerator));
55    reg.register(Box::new(StorageAdapterGenerator));
56    reg.register(Box::new(ProjectGenerator));
57    reg.register(Box::new(TemplatesGenerator));
58    reg.register(Box::new(GeneratorGenerator));
59    reg.register(Box::new(crate::generators::locale::LocaleGenerator));
60    reg
61}