A better Rust ATProto crate
1use clap::Parser;
2use jacquard_lexgen::cli::CodegenArgs;
3use jacquard_lexicon::codegen::{CodeGenerator, CodegenMode};
4use jacquard_lexicon::corpus::LexiconCorpus;
5
6fn main() -> miette::Result<()> {
7 let args = CodegenArgs::parse();
8 let mode = if args.macro_mode {
9 CodegenMode::Macro
10 } else {
11 CodegenMode::Pretty
12 };
13
14 println!("Loading lexicons from {:?}...", args.input);
15 let corpus = LexiconCorpus::load_from_dir(&args.input)?;
16
17 println!("Loaded {} lexicon documents", corpus.iter().count());
18
19 println!("Generating code (mode: {:?})...", mode);
20 let codegen = CodeGenerator::with_mode(&corpus, "crate".to_string(), mode);
21 codegen.write_to_disk(&args.output)?;
22
23 println!("Generated code to {:?}", args.output);
24
25 Ok(())
26}