baobao-codegen

Crates.iobaobao-codegen
lib.rsbaobao-codegen
version0.5.0
created_at2025-12-08 17:49:15.500696+00
updated_at2025-12-24 15:35:11.351458+00
descriptionShared code generation utilities for Bao CLI generator
homepagehttps://github.com/roushou/bao
repositoryhttps://github.com/roushou/bao
max_upload_size
id1974132
size239,130
Roushou (roushou)

documentation

README

baobao-codegen

Shared code generation utilities for Bao CLI generator.

This crate provides language-agnostic abstractions and utilities used by language-specific code generators (e.g., baobao-codegen-rust, baobao-codegen-typescript).

Features

  • Code Building - Utilities for generating code (CodeBuilder, FileBuilder)
  • Command Tree - Structures for representing command hierarchies (CommandTree, FlatCommand)
  • Handler Management - Tools for tracking handler files and detecting orphaned commands
  • Import Collection - Dependency and import tracking (DependencyCollector, ImportCollector)
  • Naming Conventions - Language-specific naming rules (NamingConvention)
  • Traits - Common interfaces for code generators (LanguageCodegen, TypeMapper)

Usage

This crate is used by language-specific code generators. You typically don't need to use it directly unless you're implementing a new language generator.

use baobao_codegen::{LanguageCodegen, PreviewFile, GenerateResult};
use baobao_codegen::{CodeBuilder, FileBuilder, CommandTree};

// Implement LanguageCodegen for a new language
impl LanguageCodegen for MyGenerator {
    fn preview(&self) -> Vec<PreviewFile> {
        // Return files that would be generated
    }

    fn generate(&self, output: &Path) -> eyre::Result<GenerateResult> {
        // Generate files to disk
    }
}

Testing Support

Enable the testing feature for test utilities:

[dev-dependencies]
baobao-codegen = { version = "0.3", features = ["testing"] }

License

This project is licensed under the MIT license.

Commit count: 0

cargo fmt