actr_cli/commands/codegen/
traits.rs1use crate::error::Result;
2use actr_config::Config;
3use async_trait::async_trait;
4use std::path::PathBuf;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
8pub enum ScaffoldType {
9 Server,
11 Client,
13 #[default]
15 Both,
16}
17
18#[derive(Debug, Clone)]
20pub struct GenContext {
21 pub proto_files: Vec<PathBuf>,
22 pub input_path: PathBuf,
23 pub output: PathBuf,
24 pub config_path: PathBuf,
25 pub config: Config,
26 pub no_scaffold: bool,
27 pub overwrite_user_code: bool,
28 pub no_format: bool,
29 pub debug: bool,
30}
31
32#[async_trait]
34pub trait LanguageGenerator: Send {
35 async fn generate_infrastructure(&self, context: &GenContext) -> Result<Vec<PathBuf>>;
37
38 async fn generate_scaffold(&self, context: &GenContext) -> Result<Vec<PathBuf>>;
40
41 async fn format_code(&self, context: &GenContext, files: &[PathBuf]) -> Result<()>;
43
44 async fn validate_code(&self, context: &GenContext) -> Result<()>;
46
47 fn print_next_steps(&self, context: &GenContext);
49}