spikard_cli/codegen/protobuf/generators/
mod.rs1pub mod base;
7pub mod elixir;
8pub mod php;
9pub mod python;
10pub mod ruby;
11pub mod rust_lang;
12pub mod typescript;
13
14use super::spec_parser::ProtobufSchema;
15use anyhow::Result;
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq)]
19pub enum ProtobufTarget {
20 Messages,
22 Services,
24 All,
26}
27
28pub trait ProtobufGenerator {
35 fn generate_messages(&self, schema: &ProtobufSchema) -> Result<String>;
37
38 fn generate_services(&self, schema: &ProtobufSchema) -> Result<String>;
40
41 fn generate_complete(&self, schema: &ProtobufSchema) -> Result<String> {
43 let messages = self.generate_messages(schema)?;
44 let services = self.generate_services(schema)?;
45 Ok(format!("{messages}\n\n{services}"))
46 }
47}
48
49#[cfg(test)]
50mod tests {
51 use super::*;
52
53 #[test]
54 fn test_protobuf_target_enum() {
55 assert_eq!(ProtobufTarget::Messages, ProtobufTarget::Messages);
56 assert_ne!(ProtobufTarget::Messages, ProtobufTarget::Services);
57 assert_ne!(ProtobufTarget::All, ProtobufTarget::Messages);
58 }
59}