Restructure and start working on CLI
This commit is contained in:
28
libjrpc/src/targets/mod.rs
Normal file
28
libjrpc/src/targets/mod.rs
Normal file
@ -0,0 +1,28 @@
|
||||
use anyhow::Result;
|
||||
|
||||
use crate::{
|
||||
compile::{Compile, CompileContext},
|
||||
IR,
|
||||
};
|
||||
|
||||
pub mod rust;
|
||||
|
||||
pub fn compile<T: Compile>(ir: IR, output: &str) -> Result<()> {
|
||||
let mut ctx = CompileContext::new(output);
|
||||
let mut compiler = T::new(&ir.options)?;
|
||||
compiler.start(&mut ctx)?;
|
||||
|
||||
for step in ir.steps.iter() {
|
||||
match step {
|
||||
crate::ir::Step::Type(definition) => compiler.generate_type(&mut ctx, &definition)?,
|
||||
crate::ir::Step::Enum(definition) => compiler.generate_enum(&mut ctx, &definition)?,
|
||||
crate::ir::Step::Service(definition) => {
|
||||
compiler.generate_service(&mut ctx, &definition)?
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
compiler.finalize(&mut ctx, &ir)?;
|
||||
|
||||
Ok(())
|
||||
}
|
Reference in New Issue
Block a user