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: Config,
25 pub no_scaffold: bool,
26 pub overwrite_user_code: bool,
27 pub no_format: bool,
28 pub debug: bool,
29}
30
31#[async_trait]
33pub trait LanguageGenerator: Send {
34 async fn generate_infrastructure(&self, context: &GenContext) -> Result<Vec<PathBuf>>;
36
37 async fn generate_scaffold(&self, context: &GenContext) -> Result<Vec<PathBuf>>;
39
40 async fn format_code(&self, context: &GenContext, files: &[PathBuf]) -> Result<()>;
42
43 async fn validate_code(&self, context: &GenContext) -> Result<()>;
45
46 fn print_next_steps(&self, context: &GenContext);
48}